Enable spell checking (#563)

* add spellchecking

* improve spelling

* improve spelling config

* extend word list

* improve spelling

* improve spelling

* escalate warning in spell check to failure

* fix spelling

* fix spelling

* add plural

* Update doc/spelling_wordlist.txt

* do not stop on warning

* require newest sphinxcontrib spelling

* remove old comment

* add authors as single line entry to spelling list

* reenable stop on warning
This commit is contained in:
Patrick Kanzler 2023-09-07 22:08:31 +02:00 committed by GitHub
parent 8f07c1da0f
commit cfa9ecf16d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 200 additions and 66 deletions

View File

@ -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 <https://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

View File

@ -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.

View File

@ -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",
]

View File

@ -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``

View File

@ -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`.

View File

@ -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
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

View File

@ -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
~~~~~~~~~~~~~~

View File

@ -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 <https://argcomplete.readthedocs.io>`__.

View File

@ -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:

View File

@ -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
--------------------------------------

View File

@ -56,7 +56,7 @@ tests_require =
mock
hypothesis>4
flake8
sphinxcontrib-spelling>=7.2.0
sphinxcontrib-spelling>=8.0.0
[options.extras_require]
usb =

View File

@ -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.

View File

@ -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:

View File

@ -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 <https://github.com/mike42/escpos-php>`_.
:author: python-escpos developers

View File

@ -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.

View File

@ -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:

View File

@ -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.

View File

@ -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 <https://github.com/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
"""

View File

@ -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