Skip to content

Commit

Permalink
Merge pull request python-escpos#388 from python-escpos/development
Browse files Browse the repository at this point in the history
v3.0a7
  • Loading branch information
patkan authored May 8, 2020
2 parents 8b30768 + fe08fc1 commit 557991d
Show file tree
Hide file tree
Showing 19 changed files with 161 additions and 91 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Python package

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.5, 3.6, 3.7, 3.8]

steps:
- uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest tox tox-gh-actions
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with tox
run: |
tox
env:
ESCPOS_CAPABILITIES_FILE: /home/runner/work/python-escpos/python-escpos/capabilities-data/dist/capabilities.json
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,6 @@ test/test-cli-output/
*.swp
*.swn
*.swo

# vscode
.vscode/settings.json
20 changes: 6 additions & 14 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
language: python
sudo: false
cache: pip
dist: xenial
dist: bionic
git:
depth: 100000
addons:
Expand Down Expand Up @@ -29,35 +29,27 @@ matrix:
osx_image: xcode10.2
language: shell
env: TOXENV=py37 ESCPOS_CAPABILITIES_FILE=/Users/travis/build/python-escpos/python-escpos/capabilities-data/dist/capabilities.json
- python: 2.7
env: TOXENV=py27
- python: 3.4
env: TOXENV=py34
- python: 3.5
env: TOXENV=py35
- python: 3.6
env: TOXENV=py36
- python: 3.6-dev
env: TOXENV=py36
- python: 3.7
env: TOXENV=py37
- python: 3.7-dev
env: TOXENV=py37
- python: 3.8
env: TOXENV=py38
- python: 3.8-dev
env: TOXENV=py38
- python: nightly
env: TOXENV=py38
- python: pypy
env: TOXENV=pypy
- python: pypy3
env: TOXENV=pypy3
- python: 3.7
- python: 3.8
env: TOXENV=docs
- python: 3.7
- python: 3.8
env: TOXENV=flake8
allow_failures:
- python: 2.7
- python: 3.6-dev
- python: 3.7-dev
- python: 3.8-dev
- python: nightly
Expand Down Expand Up @@ -86,4 +78,4 @@ deploy:
tags: true
repo: python-escpos/python-escpos
branch: master
condition: $TRAVIS_PYTHON_VERSION = "3.7"
condition: $TRAVIS_PYTHON_VERSION = "3.8"
16 changes: 16 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "test with tox",
"type": "shell",
"command": "tox",
"group": {
"kind": "test",
"isDefault": true
}
}
]
}
4 changes: 4 additions & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
Ahmed Tahri
akeonly
Alexander Bougakov
Alex Debiasio
Asuki Kono
belono
Brian
Christoph Heuel
Cody (Quantified Code Bot)
csoft2k
Expand All @@ -19,6 +21,7 @@ Kristi
ldos
Lucy Linder
Manuel F Martinez
Maximilian Wagenbach
Michael Billington
Michael Elsdörfer
mrwunderbar666
Expand All @@ -36,4 +39,5 @@ Sergio Pulgarin
Stephan Sokolow
Thijs Triemstra
Thomas van den Berg
Yaisel Hurtado
ysuolmai
27 changes: 26 additions & 1 deletion CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,10 +1,35 @@
*********
Changelog
*********
2020-05-09 - Version 3.0a7 - "No Fixed Abode"
---------------------------------------------
This release is the eight alpha release of the new version 3.0.
Please be aware that the API is subject to change until v3.0
is released.

This release also marks the point at which the project transitioned
to having only a master-branch (and not an additional development branch).

changes
^^^^^^^
- add Exception for NotImplementedError in detach_kernel_driver
- update installation information
- update and improve documentation
- add error handling to image centering flag
- update and fix tox and CI environment, preparing drop of support for Python 2

contributors
^^^^^^^^^^^^
- Alexander Bougakov
- Brian
- Yaisel Hurtado
- Maximilan Wagenbach
- Patrick Kanzler

2019-06-19 - Version 3.0a6 - "Mistake not..."
---------------------------------------------
This release is the seventh alpha release of the new version 3.0.
Please be aware the the API is subject to change until v3.0 is
Please be aware that the API is subject to change until v3.0 is
released.

changes
Expand Down
9 changes: 3 additions & 6 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,9 @@ Apart from that the travis-log and the check by Landscape will provide you with

GIT
^^^
The master-branch contains code that has been released to PyPi. A release is marked with a tag
corresponding to the version. Issues are closed when they have been resolved in the development-branch.

When you have a change to make, begin by creating a new branch from the HEAD of `python-escpos/development`.
Name your branch to indicate what you are trying to achieve. Good branch names might
be `improve/text-handling`, `feature/enable-color-printing`.
The master-branch contains the main development of the project. A release to PyPi is marked with a tag
corresponding to the version. Issues are closed when they have been resolved by merging into the master-branch.
When you have a change to make, begin by creating a new branch from the HEAD of `python-escpos/master`.

Please try to group your commits into logical units. If you need to tidy up your branch, you can make use of a
git feature called an 'interactive rebase' before making a pull request. A small, self-contained change-set is
Expand Down
23 changes: 5 additions & 18 deletions INSTALL
Original file line number Diff line number Diff line change
@@ -1,23 +1,10 @@
python-escpos
=============

Ensure the library is installed on ${lib_arch}/${python_ver}/site-packages/escpos
This library is available over pypi. So for most of the use-cases it should be sufficient to run

On CLi you must run:
# python setup.py build
# sudo python setup.py install
```
pip install python-escpos --user # add --pre if you want to install pre-releases
```

On Linux, ensure you belongs to the proper group so you can have access to the printer.
This can be done, by adding yourself to 'dialout' group, this might require to re-login
so the changes make effect.

Then, add the following rule to /etc/udev/rules.d/99-escpos.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04b8", ATTRS{idProduct}=="0202", MODE="0664", GROUP="dialout"

and restar udev rules.
# sudo service udev restart

Enjoy !!!
And please, don't forget to ALWAYS add Epson.cut() at the end of your printing :)

Manuel F Martinez <[email protected]>
For more information please read the documentation at https://python-escpos.readthedocs.io/en/latest/user/installation.html
1 change: 1 addition & 0 deletions MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ include LICENSE
include INSTALL
include tox.ini
include capabilities-data/dist/capabilities.json
include src/escpos/capabilities.json
recursive-include doc *.bat
recursive-include doc *.ico
recursive-include doc *.py
Expand Down
19 changes: 19 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,25 @@ Another example based on the Network printer class:
kitchen.text("Hello World\n")
kitchen.barcode('1324354657687', 'EAN13', 64, 2, '', '')
kitchen.cut()
Another example based on the Serial printer class:

.. code:: python
from escpos.printer import Serial
""" 9600 Baud, 8N1, Flow Control Enabled """
p = Serial(devfile='/dev/tty.usbserial',
baudrate=9600,
bytesize=8,
parity='N',
stopbits=1,
timeout=1.00,
dsrdtr=True)
p.text("Hello World\n")
p.qr("You can readme from your smartphone")
p.cut()
The full project-documentation is available on `Read the Docs <https://python-escpos.readthedocs.io>`_.
Expand Down
35 changes: 3 additions & 32 deletions doc/user/todo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,9 @@
TODO
****

Introduction
------------

python-escpos is the initial idea, from here we can start to build a
robust library to get most of the ESC/POS printers working with this
library.

Eventually, this library must be able to cover almost all the defined
models detailed in the ESC/POS Command Specification Manual.

Details
-------

What things are planned to work on?

Testing
~~~~~~~

* Test on many printers as possible (USB, Serial, Network)
* automate testing

Design
~~~~~~

* Add all those sequences which are not common, but part of the ESC/POS
Command Specifications.

* Port to Python 3
* Windows compatibility (hidapi instead libusb?)
* PDF417 support

* use something similar to the `capabilities` in escpos-php
Open points and issues of the project are tracked in the GitHub issues.
Some annotations still remain in the code and should be moved over time
into the issue tracker.

Todos in the codebase
~~~~~~~~~~~~~~~~~~~~~
Expand Down
8 changes: 5 additions & 3 deletions doc/user/usage.rst
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,16 @@ to have and the second yields the "Output Endpoint" address.

By default the "Interface" number is "0" and the "Output Endpoint"
address is "0x01". If you have other values then you can define them on
your instance. So, assuming that we have another printer where in\_ep is
on 0x81 and out\_ep=0x02, then the printer definition should look like:
your instance. So, assuming that we have another printer, CT-S2000,
manufactured by Citizen (with "Vendor ID" of 2730 and "Product ID" of 0fff)
where in\_ep is on 0x81 and out\_ep=0x02, then the printer definition should
look like:

**Generic USB Printer initialization**

::

p = printer.Usb(0x1a2b,0x1a2b,0,0x81,0x02)
p = printer.Usb(0x2730, 0x0fff, 0, 0x81, 0x02)

Network printer
^^^^^^^^^^^^^^^
Expand Down
2 changes: 1 addition & 1 deletion readthedocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ formats:
- epub
requirements_file: doc/requirements.txt
python:
version: 2
version: 3
setup_py_install: true
5 changes: 2 additions & 3 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,11 @@ def read(fname):
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Software Development :: Libraries :: Python Modules',
'Topic :: Office/Business :: Financial :: Point-Of-Sale',
],
Expand Down Expand Up @@ -100,7 +99,7 @@ def read(fname):
'nose',
'scripttest',
'mock',
'hypothesis!=3.56.9,<4',
'hypothesis>4',
'flake8'
],
entry_points={
Expand Down
7 changes: 7 additions & 0 deletions src/escpos/escpos.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,9 @@ def image(self, img_source, high_density_vertical=True, high_density_horizontal=
* `graphics`: prints with the `GS ( L`-command
* `bitImageColumn`: prints with the `ESC *`-command
When trying to center an image make sure you have initialized the printer with a valid profile, that
contains a media width pixel field. Otherwise the centering will have no effect.
:param img_source: PIL image or filename to load: `jpg`, `gif`, `png` or `bmp`
:param high_density_vertical: print in high density in vertical direction *default:* True
:param high_density_horizontal: print in high density in horizontal direction *default:* True
Expand All @@ -117,6 +120,10 @@ def image(self, img_source, high_density_vertical=True, high_density_horizontal=
im = EscposImage(img_source)

try:
if self.profile.profile_data['media']['width']['pixels'] == "Unknown":
print("The media.width.pixel field of the printer profile is not set. " +
"The center flag will have no effect.")

max_width = int(self.profile.profile_data['media']['width']['pixels'])

if im.width > max_width:
Expand Down
Loading

0 comments on commit 557991d

Please sign in to comment.