diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0fc208b..029a406 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -10,7 +10,7 @@ finally get a version 3.0 out. changes ^^^^^^^ - Include support for CUPS based printer interfaces -- Move the build toolchain to GitHub +- Move the build tool chain to GitHub contributors ^^^^^^^^^^^^ @@ -67,7 +67,7 @@ contributors - Alexander Bougakov - Brian - Yaisel Hurtado -- Maximilan Wagenbach +- Maximilian Wagenbach - Patrick Kanzler 2019-06-19 - Version 3.0a6 - "Mistake not..." @@ -79,7 +79,7 @@ released. changes ^^^^^^^ - fix inclusion of the capabilities-file -- execute CI jobs also on Windows and macOS-targets +- execute CI jobs also on Windows and MacOS-targets - improve documentation contributors @@ -214,7 +214,7 @@ changes - feature: the driver tries now to guess the appropriate codepage and sets it automatically (called "magic encode") - as an alternative you can force the codepage with the old API - updated and improved documentation -- changed constructor of main class due to introduction of capablities +- changed constructor of main class due to introduction of capabilities - changed interface of method `blocktext`, changed behavior of multiple methods, for details refer to the documentation on `python-escpos.readthedocs.io `_ - add support for custom cash drawer sequence @@ -239,7 +239,7 @@ changes - fix improper API-use in qrcode() - change setup.py shebang to make it compatible with virtualenvs. - add constants for sheet mode and colors -- support changing the linespacing +- support changing the line spacing contributors ^^^^^^^^^^^^ @@ -293,8 +293,8 @@ changes - packaging: configured the coverage-analysis codecov.io - GitHub: improved issues-template - documentation: add troubleshooting tip to network-interface -- the module, cli and documentation is now aware of the version of python-escpos -- the cli does now support basic tabcompletion +- the module, CLI and documentation is now aware of the version of python-escpos +- the CLI does now support basic tab completion contributors ^^^^^^^^^^^^ @@ -312,7 +312,7 @@ changes - refactor complete code in order to be compatible with Python 2 and 3 - modernize packaging - add testing and CI -- merge various forks into codebase, fixing multiple issues with barcode-, QR-printing, cashdraw and structure +- merge various forks into codebase, fixing multiple issues with barcode-, QR-printing, cash-draw and structure - improve the documentation - extend support of barcode-codes to type B - add function to disable panel-buttons @@ -383,7 +383,7 @@ contributors -------------------------- - Issue #5: Fixed vertical tab -- Issue #9: Fixed identation inconsistence +- Issue #9: Fixed indentation inconsistency 2013-03-14 - Version 1.0.1 -------------------------- @@ -394,6 +394,6 @@ contributors 2012-11-15 - Version 1.0 ------------------------ -- Issue #2: Added ethernet support +- Issue #2: Added Ethernet support - Issue #3: Added compatibility with libusb-1.0.1 - Issue #4: Fixed typo in escpos.py diff --git a/README.rst b/README.rst index 2988d1c..0e2121c 100644 --- a/README.rst +++ b/README.rst @@ -12,7 +12,7 @@ Description Python ESC/POS is a library which lets the user have access to all those printers handled by ESC/POS commands, as defined by Epson, from a Python application. -The library tries to implement the functions provided by the ESC/POS-commandset and supports sending text, images, +The library tries to implement the functions provided by the ESC/POS-command-set and supports sending text, images, barcodes and qr-codes to the printer. Text can be aligned/justified and fonts can be changed by size, type and weight. diff --git a/doc/conf.py b/doc/conf.py index 0a03634..b3f1fb5 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -316,3 +316,15 @@ spelling_ignore_pypi_package_names = True spelling_ignore_wiki_words = True spelling_ignore_python_builtins = True spelling_ignore_importable_modules = True +spelling_ignore_contributor_names = True +spelling_word_list_filename = ["spelling_wordlist.txt", "../AUTHORS"] +spelling_show_suggestions = True +spelling_suggestion_limit = 3 +spelling_warning = True +spelling_exclude_patterns = [ + "**/capabilities.json", + "../../capabilities-data/dist/capabilities.json", + "**/available-encodings.rst", + "**/available-profiles.rst", + "dev/todo.rst", +] diff --git a/doc/dev/repository.rst b/doc/dev/repository.rst index b5d50ec..207fb8d 100644 --- a/doc/dev/repository.rst +++ b/doc/dev/repository.rst @@ -5,13 +5,13 @@ Repository :Last Reviewed: 2023-09-05 -This project uses subprojects and retrieves its versioning +This project uses sub-projects and retrieves its versioning information from version control. Therefore it is crucial that you follow these rules when working with the project (e.g. for packaging a development version). * Make sure that the git project is complete. A call to git status for example should succeed. -* Make sure that you have checked out all available subprojects. +* Make sure that you have checked out all available sub-projects. * Proper initialization of submodules can be ensured with ``git submodule update --init --recursive`` diff --git a/doc/printer_profiles/capabilities.rst b/doc/printer_profiles/capabilities.rst index d571693..2e6a65d 100644 --- a/doc/printer_profiles/capabilities.rst +++ b/doc/printer_profiles/capabilities.rst @@ -21,6 +21,6 @@ The identifier can be found in :ref:`available-profiles`. This documentation describes the profiles in the database file that is bundled with this release. If another configuration is to be used, this chapter can be followed -for information on how to sideload another `capabilities`-database: +for information on how to side-load another `capabilities`-database: :ref:`advanced-usage-change-capabilities-profile`. diff --git a/doc/spelling_wordlist.txt b/doc/spelling_wordlist.txt index e037ead..a72c8cc 100644 --- a/doc/spelling_wordlist.txt +++ b/doc/spelling_wordlist.txt @@ -1,7 +1,125 @@ -Raspbian ESC +Esc POS +Pos Escpos Escpos +escpos + +bitImageColumn +bitImageRaster +ep +pc +cp + +csoft +Frédéric +Headcrash +Krispy +primax +Tahri +reck +mrwunderbar +zouppen +kedare +Foaly +brendanhowell +der +fvdsn +Marull +Paretas +Kakistocrat +Billington +patkan +Romain +Bougakov +Yaisel +Hurtado +Wagenbach +Poca +Akram +Vieira +Christoph +Heuel +Thijs +Triemstra +Linder +Romain +Pulgarin +Romain +Cheng +Dmytro +Katyukha +Elsdörfer +Asuki +Kono +López +mashedkeyboard +Thijs +Triemstra +Elsdörfer +Renato +Lorenzi +Bookham +Goglin +Christoph +Heuel +Qian +Lehtonen + +barcode +barcodes baudrate -lsusb \ No newline at end of file +Bashlinux +capabilities +cashdraw +charcode +changelog +cheque +codebase +codecov +codepages +config +del +dev +dialout +docstrings +ean +Ean +encodable +fff +io +json +latin +libusb +lp +lsusb +natively +php +pre +prefilled +printcap +programmatically +py +pypy +pyyaml +px +qrcode +Raspbian +rebase +rebased +resetted +rst +submodule +submodules +src +testcases +th +Todo +traceback +udev +usb +usec +virtualenvs +whitespaces +xml \ No newline at end of file diff --git a/doc/user/barcode.rst b/doc/user/barcode.rst index 129e3c4..5926938 100644 --- a/doc/user/barcode.rst +++ b/doc/user/barcode.rst @@ -4,14 +4,14 @@ Printing Barcodes :Last Reviewed: 2023-08-10 Many printers implement barcode printing natively. -This hardware renderered barcodes are fast but the supported +These hardware rendered barcodes are fast but the supported formats are limited by the printer itself and different between models. However, almost all printers support printing images, so barcode rendering can be performed externally by software and then sent to the printer as an image. As a drawback, this operation is much slower and the user needs to know and choose the image implementation method supported by -the printer's commandset. +the printer's command-set. barcode-method ~~~~~~~~~~~~~~ diff --git a/doc/user/installation.rst b/doc/user/installation.rst index 33a2dbb..64079c8 100644 --- a/doc/user/installation.rst +++ b/doc/user/installation.rst @@ -63,7 +63,8 @@ Setup udev for USB-Printers Enabling tab-completion in CLI ------------------------------ -python-escpos has a CLI with tab-completion. This is realised with ``argcomplete``. +python-escpos has a CLI with tab-completion. +This is realized with ``argcomplete``. In order for this to work you have to enable tab-completion, which is described in the `manual of argcomplete `__. diff --git a/doc/user/printers.rst b/doc/user/printers.rst index 342d5d3..d9db0b9 100644 --- a/doc/user/printers.rst +++ b/doc/user/printers.rst @@ -12,7 +12,7 @@ printers. .. note:: This driver is not suited for USB-to-Serial-adapters - and similiar devices, but only for those implementing native USB. + and similar devices, but only for those implementing native USB. .. autoclass:: escpos.printer.Usb :members: diff --git a/doc/user/usage.rst b/doc/user/usage.rst index eaaccd7..30e1d44 100644 --- a/doc/user/usage.rst +++ b/doc/user/usage.rst @@ -146,7 +146,7 @@ And for linux:: $HOME/.config/python-escpos/config.yaml -If you aren't sure, run:: +If you are not sure, run:: from escpos import config c = config.Config() @@ -206,10 +206,12 @@ For normal usage you can simply pass your text to the printers ``text()``-functi the right codepage and then send the encoded data to the printer. If this feature does not work, please try to isolate the error and then create an issue on the GitHub project page. -If you want or need to you can manually set the codepage. For this please use the ``charcode()``-function. You can set -any key-value that is in ``CHARCODE``. If something is wrong, an ``CharCodeError`` will be raised. -After you have manually set the codepage the printer won't change it anymore. You can revert to normal behaviour -by setting charcode to ``AUTO``. +If you want or need to you can manually set the codepage. +For this please use the ``charcode()``-function. +You can set any key-value that is in ``CHARCODE``. +If something is wrong, an ``CharCodeError`` will be raised. +After you have manually set the codepage the printer won't change it anymore. +You can revert to normal behavior by setting charcode to ``AUTO``. Advanced Usage: Print from binary blob -------------------------------------- diff --git a/setup.cfg b/setup.cfg index f5f47b4..bf5ff86 100644 --- a/setup.cfg +++ b/setup.cfg @@ -56,7 +56,7 @@ tests_require = mock hypothesis>4 flake8 - sphinxcontrib-spelling>=7.2.0 + sphinxcontrib-spelling>=8.0.0 [options.extras_require] usb = diff --git a/src/escpos/cli.py b/src/escpos/cli.py index 321fa01..59b195e 100644 --- a/src/escpos/cli.py +++ b/src/escpos/cli.py @@ -26,7 +26,7 @@ from . import config, version # Must be defined before it's used in DEMO_FUNCTIONS def str_to_bool(string): - """Convert string to Bool. + """Convert string to bool. Used as a type in argparse so that we get back a proper bool instead of always True. diff --git a/src/escpos/config.py b/src/escpos/config.py index 8649dae..d4868f3 100644 --- a/src/escpos/config.py +++ b/src/escpos/config.py @@ -13,7 +13,7 @@ from . import exceptions, printer class Config(object): """Configuration handler class. - This class loads configuration from a default or specificed directory. It + This class loads configuration from a default or specified directory. It can create your defined printer and return it to you. """ @@ -95,7 +95,7 @@ class Config(object): Throw an exception on error. - This method loads the default config if one hasn't beeen already loaded. + This method loads the default config if one has not been already loaded. """ if not self._has_loaded: diff --git a/src/escpos/constants.py b/src/escpos/constants.py index 636cdfe..f6bfcea 100644 --- a/src/escpos/constants.py +++ b/src/escpos/constants.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- """ Set of ESC/POS Commands (Constants) -This module contains constants that are described in the esc/pos-documentation. -Since there is no definitive and unified specification for all esc/pos-like printers the constants could later be +This module contains constants that are described in the Esc/Pos-documentation. +Since there is no definitive and unified specification for all Esc/Pos-like printers the constants could later be moved to `capabilities` as in `escpos-php by @mike42 `_. :author: python-escpos developers diff --git a/src/escpos/escpos.py b/src/escpos/escpos.py index 0b1e64a..8899efe 100644 --- a/src/escpos/escpos.py +++ b/src/escpos/escpos.py @@ -110,7 +110,7 @@ SW_BARCODE_NAMES = { class Escpos(object): """ESC/POS Printer object. - This class is the abstract base class for an esc/pos-printer. The printer implementations are children of this + This class is the abstract base class for an Esc/Pos-printer. The printer implementations are children of this class. """ @@ -391,9 +391,11 @@ class Escpos(object): def charcode(self, code: str = "AUTO") -> None: """Set Character Code Table. - Sets the control sequence from ``CHARCODE`` in :py:mod:`escpos.constants` as active. It will be sent with - the next text sequence. If you set the variable code to ``AUTO`` it will try to automatically guess the - right codepage. (This is the standard behaviour.) + Sets the control sequence from ``CHARCODE`` in :py:mod:`escpos.constants` as active. + It will be sent with the next text sequence. + If you set the variable code to ``AUTO`` it will try to automatically guess the + right codepage. + (This is the standard behavior.) :param code: Name of CharCode :raises: :py:exc:`~escpos.exceptions.CharCodeError` @@ -848,7 +850,7 @@ class Escpos(object): self.text("\n" * count) def block_text(self, txt, font="0", columns=None): - """Print text wrapped to specifiec columns. + """Print text wrapped to specific columns. Text has to be encoded in unicode. diff --git a/src/escpos/exceptions.py b/src/escpos/exceptions.py index b578bf1..5cbe352 100644 --- a/src/escpos/exceptions.py +++ b/src/escpos/exceptions.py @@ -79,7 +79,7 @@ class BarcodeSizeError(Error): This exception indicates that the values for the barcode size are out of range. The size of the barcode has to be in the range that is specified in :py:meth:`escpos.escpos.Escpos.barcode`. - The resulting returncode is `20`. + The resulting return code is `20`. inheritance: @@ -104,7 +104,7 @@ class BarcodeCodeError(Error): No data for the barcode has been supplied in :py:meth:`escpos.escpos.Escpos.barcode` or the the `check` parameter was True and the check failed. - The returncode for this exception is `30`. + The return code for this exception is `30`. inheritance: @@ -127,7 +127,7 @@ class BarcodeCodeError(Error): class ImageSizeError(Error): """Image height is longer than 255px and can't be printed. - The returncode for this exception is `40`. + The return code for this exception is `40`. inheritance: @@ -176,7 +176,7 @@ class TextError(Error): """Text string must be supplied to the `text()` method. This exception is raised when an empty string is passed to :py:meth:`escpos.escpos.Escpos.text`. - The returncode for this exception is `50`. + The return code for this exception is `50`. inheritance: @@ -202,7 +202,7 @@ class CashDrawerError(Error): """Valid pin must be set in order to send pulse. A valid pin number has to be passed onto the method :py:meth:`escpos.escpos.Escpos.cashdraw`. - The returncode for this exception is `60`. + The return code for this exception is `60`. inheritance: @@ -229,7 +229,7 @@ class TabPosError(Error): Both values multiplied must not exceed 255, since it is the maximum tab value. This exception is raised by :py:meth:`escpos.escpos.Escpos.control`. - The returncode for this exception is `70`. + The return code for this exception is `70`. inheritance: @@ -255,7 +255,7 @@ class CharCodeError(Error): """Valid char code must be set. The supplied charcode-name in :py:meth:`escpos.escpos.Escpos.charcode` is unknown. - Ths returncode for this exception is `80`. + The return code for this exception is `80`. inheritance: @@ -276,10 +276,10 @@ class CharCodeError(Error): class USBNotFoundError(Error): - """Device wasn't found (probably not plugged in). + """Device was not found (probably not plugged in). The USB device seems to be not plugged in. - Ths returncode for this exception is `90`. + The return code for this exception is `90`. inheritance: @@ -303,7 +303,7 @@ class SetVariableError(Error): """A set method variable was out of range. Check set variables against minimum and maximum values - Ths returncode for this exception is `100`. + The return code for this exception is `100`. inheritance: @@ -330,7 +330,7 @@ class ConfigNotFoundError(Error): """The configuration file was not found. The default or passed configuration file could not be read - Ths returncode for this exception is `200`. + The return code for this exception is `200`. inheritance: @@ -354,7 +354,7 @@ class ConfigSyntaxError(Error): """The configuration file is invalid. The syntax is incorrect - Ths returncode for this exception is `210`. + The return code for this exception is `210`. inheritance: @@ -377,8 +377,8 @@ class ConfigSyntaxError(Error): class ConfigSectionMissingError(Error): """The configuration file is missing a section. - The part of the config asked for doesn't exist in the loaded configuration - Ths returncode for this exception is `220`. + The part of the config asked for does not exist in the loaded configuration + The return code for this exception is `220`. inheritance: diff --git a/src/escpos/magicencode.py b/src/escpos/magicencode.py index cdb2682..c9847e1 100644 --- a/src/escpos/magicencode.py +++ b/src/escpos/magicencode.py @@ -28,15 +28,9 @@ class Encoder(object): Note: To determine the code page, it needs to do the conversion, and thus already knows what the final byte in the target encoding would - be. Nevertheless, the API of this class doesn't return the byte. + be. Nevertheless, the API of this class does not return the byte. The caller use to do the character conversion itself. - - $ python -m timeit -s "{u'ö':'a'}.get(u'ö')" - 100000000 loops, best of 3: 0.0133 usec per loop - - $ python -m timeit -s "u'ö'.encode('latin1')" - 100000000 loops, best of 3: 0.0141 usec per loop """ def __init__(self, codepage_map): @@ -117,7 +111,7 @@ class Encoder(object): return codepage_char_map def can_encode(self, encoding, char): - """Determine if a character is encodeable in the given code page. + """Determine if a character is encodable in the given code page. :param encoding: The name of the encoding. :param char: The character to attempt to encode. @@ -171,7 +165,7 @@ class Encoder(object): 1. code pages that we already tried before; there is a good chance they might work again, reducing the search space, and by re-using already used encodings we might also - reduce the number of codepage change instructiosn we have + reduce the number of codepage change instruction we have to send. Still, any performance gains will presumably be fairly minor. diff --git a/src/escpos/printer/network.py b/src/escpos/printer/network.py index 9d1f9d8..9e406fb 100644 --- a/src/escpos/printer/network.py +++ b/src/escpos/printer/network.py @@ -1,6 +1,6 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -"""This module contains the implementation of the CupsPrinter printer driver. +"""This module contains the implementation of the Network printer driver. :author: python-escpos developers :organization: `python-escpos `_ @@ -21,18 +21,22 @@ def is_usable() -> bool: class Network(Escpos): """Network printer. - This class is used to attach to a networked printer. You can also use this in order to attach to a printer that + This class is used to attach to a networked printer. + You can also use this in order to attach to a printer that is forwarded with ``socat``. - If you have a local printer on parallel port ``/dev/usb/lp0`` then you could start ``socat`` with: + If you have a local printer on parallel port ``/dev/usb/lp0`` + then you could start ``socat`` with: .. code-block:: none socat -u TCP4-LISTEN:4242,reuseaddr,fork OPEN:/dev/usb/lp0 Then you should be able to attach to port ``4242`` with this class. - Otherwise the normal usecase would be to have a printer with ethernet interface. This type of printer should - work the same with this class. For the address of the printer check its manuals. + Otherwise the normal use case would be to have a printer with + Ethernet interface. + This type of printer should work the same with this class. + For the address of the printer check its manuals. inheritance: @@ -53,7 +57,7 @@ class Network(Escpos): def __init__(self, host, port=9100, timeout=60, *args, **kwargs): """Initialize network printer. - :param host: Printer's hostname or IP address + :param host: Printer's host name or IP address :param port: Port to write to :param timeout: timeout in seconds for the socket-library """ diff --git a/tox.ini b/tox.ini index ff30b29..b070b8d 100644 --- a/tox.ini +++ b/tox.ini @@ -33,12 +33,13 @@ changedir = doc deps = sphinx>=7.2.3 setuptools_scm python-barcode - sphinxcontrib-spelling>=7.2.0 + sphinxcontrib-spelling>=8.0.0 sphinxcontrib.datatemplates sphinx-autodoc-typehints sphinx_rtd_theme pycups commands = sphinx-build -W -b html -d {envtmpdir}/doctrees . {envtmpdir}/html + sphinx-build -W -b spelling -d {envtmpdir}/doctrees . {envtmpdir}/spelling [testenv:flake8] basepython = python