mirror of
https://github.com/python-escpos/python-escpos
synced 2025-09-13 09:09:58 +00:00
Compare commits
3 Commits
developmen
...
brb-ean-ex
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a68347ee1c | ||
![]() |
c40f2abe07 | ||
![]() |
fb82e5dc4a |
43
.github/workflows/pythonpackage.yml
vendored
43
.github/workflows/pythonpackage.yml
vendored
@@ -1,43 +0,0 @@
|
|||||||
# 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
.gitignore
vendored
3
.gitignore
vendored
@@ -29,6 +29,3 @@ test/test-cli-output/
|
|||||||
*.swp
|
*.swp
|
||||||
*.swn
|
*.swn
|
||||||
*.swo
|
*.swo
|
||||||
|
|
||||||
# vscode
|
|
||||||
.vscode/settings.json
|
|
||||||
|
1
.mailmap
1
.mailmap
@@ -13,3 +13,4 @@ csoft2k <csoft2k@hotmail.com>
|
|||||||
Sergio Pulgarin <sergio.pulgarin@gmail.com>
|
Sergio Pulgarin <sergio.pulgarin@gmail.com>
|
||||||
reck31 <rakesh.gunduka@gmail.com>
|
reck31 <rakesh.gunduka@gmail.com>
|
||||||
Alex Debiasio <alex.debiasio@thinkin.io> <alex.debiasio@studenti.unitn.it>
|
Alex Debiasio <alex.debiasio@thinkin.io> <alex.debiasio@studenti.unitn.it>
|
||||||
|
Brian 'Redbeard' Harrington <redbeard@dead-city.org>
|
||||||
|
20
.travis.yml
20
.travis.yml
@@ -1,7 +1,7 @@
|
|||||||
language: python
|
language: python
|
||||||
sudo: false
|
sudo: false
|
||||||
cache: pip
|
cache: pip
|
||||||
dist: bionic
|
dist: xenial
|
||||||
git:
|
git:
|
||||||
depth: 100000
|
depth: 100000
|
||||||
addons:
|
addons:
|
||||||
@@ -29,27 +29,35 @@ matrix:
|
|||||||
osx_image: xcode10.2
|
osx_image: xcode10.2
|
||||||
language: shell
|
language: shell
|
||||||
env: TOXENV=py37 ESCPOS_CAPABILITIES_FILE=/Users/travis/build/python-escpos/python-escpos/capabilities-data/dist/capabilities.json
|
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
|
- python: 3.5
|
||||||
env: TOXENV=py35
|
env: TOXENV=py35
|
||||||
- python: 3.6
|
- python: 3.6
|
||||||
env: TOXENV=py36
|
env: TOXENV=py36
|
||||||
|
- python: 3.6-dev
|
||||||
|
env: TOXENV=py36
|
||||||
- python: 3.7
|
- python: 3.7
|
||||||
env: TOXENV=py37
|
env: TOXENV=py37
|
||||||
- python: 3.7-dev
|
- python: 3.7-dev
|
||||||
env: TOXENV=py37
|
env: TOXENV=py37
|
||||||
- python: 3.8
|
|
||||||
env: TOXENV=py38
|
|
||||||
- python: 3.8-dev
|
- python: 3.8-dev
|
||||||
env: TOXENV=py38
|
env: TOXENV=py38
|
||||||
- python: nightly
|
- python: nightly
|
||||||
env: TOXENV=py38
|
env: TOXENV=py38
|
||||||
|
- python: pypy
|
||||||
|
env: TOXENV=pypy
|
||||||
- python: pypy3
|
- python: pypy3
|
||||||
env: TOXENV=pypy3
|
env: TOXENV=pypy3
|
||||||
- python: 3.8
|
- python: 3.7
|
||||||
env: TOXENV=docs
|
env: TOXENV=docs
|
||||||
- python: 3.8
|
- python: 3.7
|
||||||
env: TOXENV=flake8
|
env: TOXENV=flake8
|
||||||
allow_failures:
|
allow_failures:
|
||||||
|
- python: 2.7
|
||||||
|
- python: 3.6-dev
|
||||||
- python: 3.7-dev
|
- python: 3.7-dev
|
||||||
- python: 3.8-dev
|
- python: 3.8-dev
|
||||||
- python: nightly
|
- python: nightly
|
||||||
@@ -78,4 +86,4 @@ deploy:
|
|||||||
tags: true
|
tags: true
|
||||||
repo: python-escpos/python-escpos
|
repo: python-escpos/python-escpos
|
||||||
branch: master
|
branch: master
|
||||||
condition: $TRAVIS_PYTHON_VERSION = "3.8"
|
condition: $TRAVIS_PYTHON_VERSION = "3.7"
|
||||||
|
16
.vscode/tasks.json
vendored
16
.vscode/tasks.json
vendored
@@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
// 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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
5
AUTHORS
5
AUTHORS
@@ -1,10 +1,9 @@
|
|||||||
Ahmed Tahri
|
Ahmed Tahri
|
||||||
akeonly
|
akeonly
|
||||||
Alexander Bougakov
|
|
||||||
Alex Debiasio
|
Alex Debiasio
|
||||||
Asuki Kono
|
Asuki Kono
|
||||||
belono
|
belono
|
||||||
Brian
|
Brian 'Redbeard' Harrington
|
||||||
Christoph Heuel
|
Christoph Heuel
|
||||||
Cody (Quantified Code Bot)
|
Cody (Quantified Code Bot)
|
||||||
csoft2k
|
csoft2k
|
||||||
@@ -21,7 +20,6 @@ Kristi
|
|||||||
ldos
|
ldos
|
||||||
Lucy Linder
|
Lucy Linder
|
||||||
Manuel F Martinez
|
Manuel F Martinez
|
||||||
Maximilian Wagenbach
|
|
||||||
Michael Billington
|
Michael Billington
|
||||||
Michael Elsdörfer
|
Michael Elsdörfer
|
||||||
mrwunderbar666
|
mrwunderbar666
|
||||||
@@ -39,5 +37,4 @@ Sergio Pulgarin
|
|||||||
Stephan Sokolow
|
Stephan Sokolow
|
||||||
Thijs Triemstra
|
Thijs Triemstra
|
||||||
Thomas van den Berg
|
Thomas van den Berg
|
||||||
Yaisel Hurtado
|
|
||||||
ysuolmai
|
ysuolmai
|
||||||
|
@@ -1,35 +1,10 @@
|
|||||||
*********
|
*********
|
||||||
Changelog
|
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..."
|
2019-06-19 - Version 3.0a6 - "Mistake not..."
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
This release is the seventh alpha release of the new version 3.0.
|
This release is the seventh alpha release of the new version 3.0.
|
||||||
Please be aware that the API is subject to change until v3.0 is
|
Please be aware the the API is subject to change until v3.0 is
|
||||||
released.
|
released.
|
||||||
|
|
||||||
changes
|
changes
|
||||||
|
@@ -56,9 +56,12 @@ Apart from that the travis-log and the check by Landscape will provide you with
|
|||||||
|
|
||||||
GIT
|
GIT
|
||||||
^^^
|
^^^
|
||||||
The master-branch contains the main development of the project. A release to PyPi is marked with a tag
|
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 by merging into the master-branch.
|
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/master`.
|
|
||||||
|
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`.
|
||||||
|
|
||||||
Please try to group your commits into logical units. If you need to tidy up your branch, you can make use of a
|
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
|
git feature called an 'interactive rebase' before making a pull request. A small, self-contained change-set is
|
||||||
|
23
INSTALL
23
INSTALL
@@ -1,10 +1,23 @@
|
|||||||
python-escpos
|
python-escpos
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This library is available over pypi. So for most of the use-cases it should be sufficient to run
|
Ensure the library is installed on ${lib_arch}/${python_ver}/site-packages/escpos
|
||||||
|
|
||||||
```
|
On CLi you must run:
|
||||||
pip install python-escpos --user # add --pre if you want to install pre-releases
|
# python setup.py build
|
||||||
```
|
# sudo python setup.py install
|
||||||
|
|
||||||
For more information please read the documentation at https://python-escpos.readthedocs.io/en/latest/user/installation.html
|
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 <manpaz@bashlinux.com>
|
||||||
|
@@ -4,7 +4,6 @@ include LICENSE
|
|||||||
include INSTALL
|
include INSTALL
|
||||||
include tox.ini
|
include tox.ini
|
||||||
include capabilities-data/dist/capabilities.json
|
include capabilities-data/dist/capabilities.json
|
||||||
include src/escpos/capabilities.json
|
|
||||||
recursive-include doc *.bat
|
recursive-include doc *.bat
|
||||||
recursive-include doc *.ico
|
recursive-include doc *.ico
|
||||||
recursive-include doc *.py
|
recursive-include doc *.py
|
||||||
|
23
README.rst
23
README.rst
@@ -62,7 +62,7 @@ The basic usage is:
|
|||||||
p = Usb(0x04b8, 0x0202, 0, profile="TM-T88III")
|
p = Usb(0x04b8, 0x0202, 0, profile="TM-T88III")
|
||||||
p.text("Hello World\n")
|
p.text("Hello World\n")
|
||||||
p.image("logo.gif")
|
p.image("logo.gif")
|
||||||
p.barcode('1324354657687', 'EAN13', 64, 2, '', '')
|
p.barcode('4006381333931', 'EAN13', 64, 2, '', '')
|
||||||
p.cut()
|
p.cut()
|
||||||
|
|
||||||
|
|
||||||
@@ -74,27 +74,8 @@ Another example based on the Network printer class:
|
|||||||
|
|
||||||
kitchen = Network("192.168.1.100") #Printer IP Address
|
kitchen = Network("192.168.1.100") #Printer IP Address
|
||||||
kitchen.text("Hello World\n")
|
kitchen.text("Hello World\n")
|
||||||
kitchen.barcode('1324354657687', 'EAN13', 64, 2, '', '')
|
kitchen.barcode('4006381333931', 'EAN13', 64, 2, '', '')
|
||||||
kitchen.cut()
|
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>`_.
|
The full project-documentation is available on `Read the Docs <https://python-escpos.readthedocs.io>`_.
|
||||||
|
Submodule capabilities-data updated: 3b5b35cfd3...8885283d71
@@ -48,16 +48,14 @@ to have and the second yields the "Output Endpoint" address.
|
|||||||
|
|
||||||
By default the "Interface" number is "0" and the "Output Endpoint"
|
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
|
address is "0x01". If you have other values then you can define them on
|
||||||
your instance. So, assuming that we have another printer, CT-S2000,
|
your instance. So, assuming that we have another printer where in\_ep is
|
||||||
manufactured by Citizen (with "Vendor ID" of 2730 and "Product ID" of 0fff)
|
on 0x81 and out\_ep=0x02, then the printer definition should look like:
|
||||||
where in\_ep is on 0x81 and out\_ep=0x02, then the printer definition should
|
|
||||||
look like:
|
|
||||||
|
|
||||||
**Generic USB Printer initialization**
|
**Generic USB Printer initialization**
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
p = printer.Usb(0x2730, 0x0fff, 0, 0x81, 0x02)
|
p = printer.Usb(0x1a2b,0x1a2b,0,0x81,0x02)
|
||||||
|
|
||||||
Network printer
|
Network printer
|
||||||
^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^
|
||||||
@@ -121,7 +119,7 @@ on a USB interface.
|
|||||||
# Print QR Code
|
# Print QR Code
|
||||||
p.qr("You can readme from your smartphone")
|
p.qr("You can readme from your smartphone")
|
||||||
# Print barcode
|
# Print barcode
|
||||||
p.barcode('1324354657687','EAN13',64,2,'','')
|
p.barcode('4006381333931','EAN13',64,2,'','')
|
||||||
# Cut paper
|
# Cut paper
|
||||||
p.cut()
|
p.cut()
|
||||||
|
|
||||||
|
@@ -3,5 +3,5 @@ formats:
|
|||||||
- epub
|
- epub
|
||||||
requirements_file: doc/requirements.txt
|
requirements_file: doc/requirements.txt
|
||||||
python:
|
python:
|
||||||
version: 3
|
version: 2
|
||||||
setup_py_install: true
|
setup_py_install: true
|
5
setup.py
5
setup.py
@@ -66,11 +66,12 @@ setup(
|
|||||||
'Operating System :: OS Independent',
|
'Operating System :: OS Independent',
|
||||||
'Programming Language :: Python',
|
'Programming Language :: Python',
|
||||||
'Programming Language :: Python :: 3',
|
'Programming Language :: Python :: 3',
|
||||||
|
'Programming Language :: Python :: 3.4',
|
||||||
'Programming Language :: Python :: 3.5',
|
'Programming Language :: Python :: 3.5',
|
||||||
'Programming Language :: Python :: 3.6',
|
'Programming Language :: Python :: 3.6',
|
||||||
'Programming Language :: Python :: 3.7',
|
'Programming Language :: Python :: 3.7',
|
||||||
'Programming Language :: Python :: 3.8',
|
|
||||||
'Programming Language :: Python :: Implementation :: CPython',
|
'Programming Language :: Python :: Implementation :: CPython',
|
||||||
|
'Programming Language :: Python :: Implementation :: PyPy',
|
||||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
'Topic :: Software Development :: Libraries :: Python Modules',
|
||||||
'Topic :: Office/Business :: Financial :: Point-Of-Sale',
|
'Topic :: Office/Business :: Financial :: Point-Of-Sale',
|
||||||
],
|
],
|
||||||
@@ -99,7 +100,7 @@ setup(
|
|||||||
'nose',
|
'nose',
|
||||||
'scripttest',
|
'scripttest',
|
||||||
'mock',
|
'mock',
|
||||||
'hypothesis>4',
|
'hypothesis!=3.56.9,<4',
|
||||||
'flake8'
|
'flake8'
|
||||||
],
|
],
|
||||||
entry_points={
|
entry_points={
|
||||||
|
@@ -53,7 +53,7 @@ DEMO_FUNCTIONS = {
|
|||||||
'barcodes_a': [
|
'barcodes_a': [
|
||||||
{'bc': 'UPC-A', 'code': '13243546576'},
|
{'bc': 'UPC-A', 'code': '13243546576'},
|
||||||
{'bc': 'UPC-E', 'code': '132435'},
|
{'bc': 'UPC-E', 'code': '132435'},
|
||||||
{'bc': 'EAN13', 'code': '1324354657687'},
|
{'bc': 'EAN13', 'code': '4006381333931'},
|
||||||
{'bc': 'EAN8', 'code': '1324354'},
|
{'bc': 'EAN8', 'code': '1324354'},
|
||||||
{'bc': 'CODE39', 'code': 'TEST'},
|
{'bc': 'CODE39', 'code': 'TEST'},
|
||||||
{'bc': 'ITF', 'code': '55867492279103'},
|
{'bc': 'ITF', 'code': '55867492279103'},
|
||||||
@@ -62,13 +62,13 @@ DEMO_FUNCTIONS = {
|
|||||||
'barcodes_b': [
|
'barcodes_b': [
|
||||||
{'bc': 'UPC-A', 'code': '13243546576', 'function_type': 'B'},
|
{'bc': 'UPC-A', 'code': '13243546576', 'function_type': 'B'},
|
||||||
{'bc': 'UPC-E', 'code': '132435', 'function_type': 'B'},
|
{'bc': 'UPC-E', 'code': '132435', 'function_type': 'B'},
|
||||||
{'bc': 'EAN13', 'code': '1324354657687', 'function_type': 'B'},
|
{'bc': 'EAN13', 'code': '4006381333931', 'function_type': 'B'},
|
||||||
{'bc': 'EAN8', 'code': '1324354', 'function_type': 'B'},
|
{'bc': 'EAN8', 'code': '1324354', 'function_type': 'B'},
|
||||||
{'bc': 'CODE39', 'code': 'TEST', 'function_type': 'B'},
|
{'bc': 'CODE39', 'code': 'TEST', 'function_type': 'B'},
|
||||||
{'bc': 'ITF', 'code': '55867492279103', 'function_type': 'B'},
|
{'bc': 'ITF', 'code': '55867492279103', 'function_type': 'B'},
|
||||||
{'bc': 'NW7', 'code': 'A00000000A', 'function_type': 'B'},
|
{'bc': 'NW7', 'code': 'A00000000A', 'function_type': 'B'},
|
||||||
{'bc': 'CODE93', 'code': 'A00000000A', 'function_type': 'B'},
|
{'bc': 'CODE93', 'code': 'A00000000A', 'function_type': 'B'},
|
||||||
{'bc': 'CODE93', 'code': '1324354657687', 'function_type': 'B'},
|
{'bc': 'CODE93', 'code': '4006381333931', 'function_type': 'B'},
|
||||||
{'bc': 'CODE128A', 'code': 'TEST', 'function_type': 'B'},
|
{'bc': 'CODE128A', 'code': 'TEST', 'function_type': 'B'},
|
||||||
{'bc': 'CODE128B', 'code': 'TEST', 'function_type': 'B'},
|
{'bc': 'CODE128B', 'code': 'TEST', 'function_type': 'B'},
|
||||||
{'bc': 'CODE128C', 'code': 'TEST', 'function_type': 'B'},
|
{'bc': 'CODE128C', 'code': 'TEST', 'function_type': 'B'},
|
||||||
|
@@ -106,9 +106,6 @@ class Escpos(object):
|
|||||||
* `graphics`: prints with the `GS ( L`-command
|
* `graphics`: prints with the `GS ( L`-command
|
||||||
* `bitImageColumn`: prints with the `ESC *`-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 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_vertical: print in high density in vertical direction *default:* True
|
||||||
:param high_density_horizontal: print in high density in horizontal direction *default:* True
|
:param high_density_horizontal: print in high density in horizontal direction *default:* True
|
||||||
@@ -120,10 +117,6 @@ class Escpos(object):
|
|||||||
im = EscposImage(img_source)
|
im = EscposImage(img_source)
|
||||||
|
|
||||||
try:
|
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'])
|
max_width = int(self.profile.profile_data['media']['width']['pixels'])
|
||||||
|
|
||||||
if im.width > max_width:
|
if im.width > max_width:
|
||||||
|
@@ -8,12 +8,15 @@
|
|||||||
:license: MIT
|
:license: MIT
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from __future__ import absolute_import, division, print_function, unicode_literals
|
from __future__ import absolute_import
|
||||||
|
from __future__ import division
|
||||||
|
from __future__ import print_function
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import serial
|
|
||||||
import socket
|
|
||||||
import usb.core
|
import usb.core
|
||||||
import usb.util
|
import usb.util
|
||||||
|
import serial
|
||||||
|
import socket
|
||||||
|
|
||||||
from .escpos import Escpos
|
from .escpos import Escpos
|
||||||
from .exceptions import USBNotFoundError
|
from .exceptions import USBNotFoundError
|
||||||
@@ -80,8 +83,6 @@ class Usb(Escpos):
|
|||||||
if check_driver is None or check_driver:
|
if check_driver is None or check_driver:
|
||||||
try:
|
try:
|
||||||
self.device.detach_kernel_driver(0)
|
self.device.detach_kernel_driver(0)
|
||||||
except NotImplementedError:
|
|
||||||
pass
|
|
||||||
except usb.core.USBError as e:
|
except usb.core.USBError as e:
|
||||||
if check_driver is not None:
|
if check_driver is not None:
|
||||||
print("Could not detatch kernel driver: {0}".format(str(e)))
|
print("Could not detatch kernel driver: {0}".format(str(e)))
|
||||||
@@ -348,7 +349,6 @@ class Dummy(Escpos):
|
|||||||
_WIN32PRINT = False
|
_WIN32PRINT = False
|
||||||
try:
|
try:
|
||||||
import win32print
|
import win32print
|
||||||
|
|
||||||
_WIN32PRINT = True
|
_WIN32PRINT = True
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
|
@@ -28,6 +28,7 @@ else:
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
||||||
|
@settings(use_coverage=False)
|
||||||
@given(path=text())
|
@given(path=text())
|
||||||
def test_load_file_printer(mocker, path):
|
def test_load_file_printer(mocker, path):
|
||||||
"""test the loading of the file-printer"""
|
"""test the loading of the file-printer"""
|
||||||
@@ -39,6 +40,7 @@ def test_load_file_printer(mocker, path):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
||||||
|
@settings(deadline=None, use_coverage=False)
|
||||||
@given(txt=text())
|
@given(txt=text())
|
||||||
def test_auto_flush(mocker, txt):
|
def test_auto_flush(mocker, txt):
|
||||||
"""test auto_flush in file-printer"""
|
"""test auto_flush in file-printer"""
|
||||||
@@ -60,6 +62,7 @@ def test_auto_flush(mocker, txt):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
@pytest.mark.skip("this test is broken and has to be fixed or discarded")
|
||||||
|
@settings(deadline=None, use_coverage=False)
|
||||||
@given(txt=text())
|
@given(txt=text())
|
||||||
def test_flush_on_close(mocker, txt):
|
def test_flush_on_close(mocker, txt):
|
||||||
"""test flush on close in file-printer"""
|
"""test flush on close in file-printer"""
|
||||||
|
13
tox.ini
13
tox.ini
@@ -1,12 +1,5 @@
|
|||||||
[tox]
|
[tox]
|
||||||
envlist = py35, py36, py37, py38, docs, flake8
|
envlist = py27, py34, py35, py36, py37, docs, flake8
|
||||||
|
|
||||||
[gh-actions]
|
|
||||||
python =
|
|
||||||
2.7: py27
|
|
||||||
3.6: py36
|
|
||||||
3.7: py37
|
|
||||||
3.8: py38
|
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
deps = nose
|
deps = nose
|
||||||
@@ -17,9 +10,9 @@ deps = nose
|
|||||||
pytest!=3.2.0,!=3.3.0
|
pytest!=3.2.0,!=3.3.0
|
||||||
pytest-cov
|
pytest-cov
|
||||||
pytest-mock
|
pytest-mock
|
||||||
hypothesis>4
|
hypothesis!=3.56.9,<4
|
||||||
viivakoodi
|
viivakoodi
|
||||||
commands = pytest --cov escpos
|
commands = py.test --cov escpos
|
||||||
passenv = ESCPOS_CAPABILITIES_PICKLE_DIR ESCPOS_CAPABILITIES_FILE CI TRAVIS TRAVIS_* APPVEYOR APPVEYOR_* CODECOV_*
|
passenv = ESCPOS_CAPABILITIES_PICKLE_DIR ESCPOS_CAPABILITIES_FILE CI TRAVIS TRAVIS_* APPVEYOR APPVEYOR_* CODECOV_*
|
||||||
|
|
||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
|
Reference in New Issue
Block a user