Stav 23.06.2026
This commit is contained in:
@@ -0,0 +1 @@
|
||||
pip
|
||||
@@ -0,0 +1,48 @@
|
||||
Copyright (c) 2011, Lincoln Loop
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
* Neither the package name nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
Original text and license from the pyqrnative package where this was forked
|
||||
from (http://code.google.com/p/pyqrnative):
|
||||
|
||||
#Ported from the Javascript library by Sam Curren
|
||||
#
|
||||
#QRCode for Javascript
|
||||
#http://d-project.googlecode.com/svn/trunk/misc/qrcode/js/qrcode.js
|
||||
#
|
||||
#Copyright (c) 2009 Kazuhiko Arase
|
||||
#
|
||||
#URL: http://www.d-project.com/
|
||||
#
|
||||
#Licensed under the MIT license:
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
# The word "QR Code" is registered trademark of
|
||||
# DENSO WAVE INCORPORATED
|
||||
# http://www.denso-wave.com/qrcode/faqpatent-e.html
|
||||
@@ -0,0 +1,668 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: qrcode
|
||||
Version: 8.2
|
||||
Summary: QR Code image generator
|
||||
Home-page: https://github.com/lincolnloop/python-qrcode
|
||||
License: BSD
|
||||
Keywords: qr,denso-wave,IEC18004
|
||||
Author: Lincoln Loop
|
||||
Author-email: info@lincolnloop.com
|
||||
Requires-Python: >=3.9,<4.0
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: License :: OSI Approved :: BSD License
|
||||
Classifier: License :: Other/Proprietary License
|
||||
Classifier: Operating System :: OS Independent
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.9
|
||||
Classifier: Programming Language :: Python :: 3.10
|
||||
Classifier: Programming Language :: Python :: 3.11
|
||||
Classifier: Programming Language :: Python :: 3.12
|
||||
Classifier: Programming Language :: Python :: 3 :: Only
|
||||
Classifier: Programming Language :: Python :: 3.13
|
||||
Classifier: Topic :: Multimedia :: Graphics
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Provides-Extra: all
|
||||
Provides-Extra: pil
|
||||
Provides-Extra: png
|
||||
Requires-Dist: colorama ; sys_platform == "win32"
|
||||
Requires-Dist: pillow (>=9.1.0) ; extra == "pil" or extra == "all"
|
||||
Requires-Dist: pypng ; extra == "png" or extra == "all"
|
||||
Description-Content-Type: text/x-rst
|
||||
|
||||
=============================
|
||||
Pure python QR Code generator
|
||||
=============================
|
||||
|
||||
Generate QR codes.
|
||||
|
||||
A standard install uses pypng_ to generate PNG files and can also render QR
|
||||
codes directly to the console. A standard install is just::
|
||||
|
||||
pip install qrcode
|
||||
|
||||
For more image functionality, install qrcode with the ``pil`` dependency so
|
||||
that pillow_ is installed and can be used for generating images::
|
||||
|
||||
pip install "qrcode[pil]"
|
||||
|
||||
.. _pypng: https://pypi.python.org/pypi/pypng
|
||||
.. _pillow: https://pypi.python.org/pypi/Pillow
|
||||
|
||||
|
||||
What is a QR Code?
|
||||
==================
|
||||
|
||||
A Quick Response code is a two-dimensional pictographic code used for its fast
|
||||
readability and comparatively large storage capacity. The code consists of
|
||||
black modules arranged in a square pattern on a white background. The
|
||||
information encoded can be made up of any kind of data (e.g., binary,
|
||||
alphanumeric, or Kanji symbols)
|
||||
|
||||
Usage
|
||||
=====
|
||||
|
||||
From the command line, use the installed ``qr`` script::
|
||||
|
||||
qr "Some text" > test.png
|
||||
|
||||
Or in Python, use the ``make`` shortcut function:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
img = qrcode.make('Some data here')
|
||||
type(img) # qrcode.image.pil.PilImage
|
||||
img.save("some_file.png")
|
||||
|
||||
Advanced Usage
|
||||
--------------
|
||||
|
||||
For more control, use the ``QRCode`` class. For example:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
qr = qrcode.QRCode(
|
||||
version=1,
|
||||
error_correction=qrcode.constants.ERROR_CORRECT_L,
|
||||
box_size=10,
|
||||
border=4,
|
||||
)
|
||||
qr.add_data('Some data')
|
||||
qr.make(fit=True)
|
||||
|
||||
img = qr.make_image(fill_color="black", back_color="white")
|
||||
|
||||
The ``version`` parameter is an integer from 1 to 40 that controls the size of
|
||||
the QR Code (the smallest, version 1, is a 21x21 matrix).
|
||||
Set to ``None`` and use the ``fit`` parameter when making the code to determine
|
||||
this automatically.
|
||||
|
||||
``fill_color`` and ``back_color`` can change the background and the painting
|
||||
color of the QR, when using the default image factory. Both parameters accept
|
||||
RGB color tuples.
|
||||
|
||||
.. code:: python
|
||||
|
||||
|
||||
img = qr.make_image(back_color=(255, 195, 235), fill_color=(55, 95, 35))
|
||||
|
||||
The ``error_correction`` parameter controls the error correction used for the
|
||||
QR Code. The following four constants are made available on the ``qrcode``
|
||||
package:
|
||||
|
||||
``ERROR_CORRECT_L``
|
||||
About 7% or less errors can be corrected.
|
||||
``ERROR_CORRECT_M`` (default)
|
||||
About 15% or less errors can be corrected.
|
||||
``ERROR_CORRECT_Q``
|
||||
About 25% or less errors can be corrected.
|
||||
``ERROR_CORRECT_H``.
|
||||
About 30% or less errors can be corrected.
|
||||
|
||||
The ``box_size`` parameter controls how many pixels each "box" of the QR code
|
||||
is.
|
||||
|
||||
The ``border`` parameter controls how many boxes thick the border should be
|
||||
(the default is 4, which is the minimum according to the specs).
|
||||
|
||||
Other image factories
|
||||
=====================
|
||||
|
||||
You can encode as SVG, or use a new pure Python image processor to encode to
|
||||
PNG images.
|
||||
|
||||
The Python examples below use the ``make`` shortcut. The same ``image_factory``
|
||||
keyword argument is a valid option for the ``QRCode`` class for more advanced
|
||||
usage.
|
||||
|
||||
SVG
|
||||
---
|
||||
|
||||
You can create the entire SVG or an SVG fragment. When building an entire SVG
|
||||
image, you can use the factory that combines as a path (recommended, and
|
||||
default for the script) or a factory that creates a simple set of rectangles.
|
||||
|
||||
From your command line::
|
||||
|
||||
qr --factory=svg-path "Some text" > test.svg
|
||||
qr --factory=svg "Some text" > test.svg
|
||||
qr --factory=svg-fragment "Some text" > test.svg
|
||||
|
||||
Or in Python:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
import qrcode.image.svg
|
||||
|
||||
if method == 'basic':
|
||||
# Simple factory, just a set of rects.
|
||||
factory = qrcode.image.svg.SvgImage
|
||||
elif method == 'fragment':
|
||||
# Fragment factory (also just a set of rects)
|
||||
factory = qrcode.image.svg.SvgFragmentImage
|
||||
else:
|
||||
# Combined path factory, fixes white space that may occur when zooming
|
||||
factory = qrcode.image.svg.SvgPathImage
|
||||
|
||||
img = qrcode.make('Some data here', image_factory=factory)
|
||||
|
||||
Two other related factories are available that work the same, but also fill the
|
||||
background of the SVG with white::
|
||||
|
||||
qrcode.image.svg.SvgFillImage
|
||||
qrcode.image.svg.SvgPathFillImage
|
||||
|
||||
The ``QRCode.make_image()`` method forwards additional keyword arguments to the
|
||||
underlying ElementTree XML library. This helps to fine tune the root element of
|
||||
the resulting SVG:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
qr = qrcode.QRCode(image_factory=qrcode.image.svg.SvgPathImage)
|
||||
qr.add_data('Some data')
|
||||
qr.make(fit=True)
|
||||
|
||||
img = qr.make_image(attrib={'class': 'some-css-class'})
|
||||
|
||||
You can convert the SVG image into strings using the ``to_string()`` method.
|
||||
Additional keyword arguments are forwarded to ElementTrees ``tostring()``:
|
||||
|
||||
.. code:: python
|
||||
|
||||
img.to_string(encoding='unicode')
|
||||
|
||||
|
||||
Pure Python PNG
|
||||
---------------
|
||||
|
||||
If Pillow is not installed, the default image factory will be a pure Python PNG
|
||||
encoder that uses `pypng`.
|
||||
|
||||
You can use the factory explicitly from your command line::
|
||||
|
||||
qr --factory=png "Some text" > test.png
|
||||
|
||||
Or in Python:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
from qrcode.image.pure import PyPNGImage
|
||||
img = qrcode.make('Some data here', image_factory=PyPNGImage)
|
||||
|
||||
|
||||
Styled Image
|
||||
------------
|
||||
|
||||
Works only with versions_ >=7.2 (SVG styled images require 7.4).
|
||||
|
||||
.. _versions: https://github.com/lincolnloop/python-qrcode/blob/master/CHANGES.rst#72-19-july-2021
|
||||
|
||||
To apply styles to the QRCode, use the ``StyledPilImage`` or one of the
|
||||
standard SVG_ image factories. These accept an optional ``module_drawer``
|
||||
parameter to control the shape of the QR Code.
|
||||
|
||||
These QR Codes are not guaranteed to work with all readers, so do some
|
||||
experimentation and set the error correction to high (especially if embedding
|
||||
an image).
|
||||
|
||||
Other PIL module drawers:
|
||||
|
||||
.. image:: doc/module_drawers.png
|
||||
|
||||
For SVGs, use ``SvgSquareDrawer``, ``SvgCircleDrawer``,
|
||||
``SvgPathSquareDrawer``, or ``SvgPathCircleDrawer``.
|
||||
|
||||
These all accept a ``size_ratio`` argument which allows for "gapped" squares or
|
||||
circles by reducing this less than the default of ``Decimal(1)``.
|
||||
|
||||
|
||||
The ``StyledPilImage`` additionally accepts an optional ``color_mask``
|
||||
parameter to change the colors of the QR Code, and an optional
|
||||
``embedded_image_path`` to embed an image in the center of the code.
|
||||
|
||||
Other color masks:
|
||||
|
||||
.. image:: doc/color_masks.png
|
||||
|
||||
Here is a code example to draw a QR code with rounded corners, radial gradient
|
||||
and an embedded image:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
from qrcode.image.styledpil import StyledPilImage
|
||||
from qrcode.image.styles.moduledrawers.pil import RoundedModuleDrawer
|
||||
from qrcode.image.styles.colormasks import RadialGradiantColorMask
|
||||
|
||||
qr = qrcode.QRCode(error_correction=qrcode.constants.ERROR_CORRECT_H)
|
||||
qr.add_data('Some data')
|
||||
|
||||
img_1 = qr.make_image(image_factory=StyledPilImage, module_drawer=RoundedModuleDrawer())
|
||||
img_2 = qr.make_image(image_factory=StyledPilImage, color_mask=RadialGradiantColorMask())
|
||||
img_3 = qr.make_image(image_factory=StyledPilImage, embedded_image_path="/path/to/image.png")
|
||||
|
||||
Examples
|
||||
========
|
||||
|
||||
Get the text content from `print_ascii`:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import io
|
||||
import qrcode
|
||||
qr = qrcode.QRCode()
|
||||
qr.add_data("Some text")
|
||||
f = io.StringIO()
|
||||
qr.print_ascii(out=f)
|
||||
f.seek(0)
|
||||
print(f.read())
|
||||
|
||||
The `add_data` method will append data to the current QR object. To add new data by replacing previous content in the same object, first use clear method:
|
||||
|
||||
.. code:: python
|
||||
|
||||
import qrcode
|
||||
qr = qrcode.QRCode()
|
||||
qr.add_data('Some data')
|
||||
img = qr.make_image()
|
||||
qr.clear()
|
||||
qr.add_data('New data')
|
||||
other_img = qr.make_image()
|
||||
|
||||
Pipe ascii output to text file in command line::
|
||||
|
||||
qr --ascii "Some data" > "test.txt"
|
||||
cat test.txt
|
||||
|
||||
Alternative to piping output to file to avoid PowerShell issues::
|
||||
|
||||
# qr "Some data" > test.png
|
||||
qr --output=test.png "Some data"
|
||||
|
||||
==========
|
||||
Change log
|
||||
==========
|
||||
|
||||
8.2 (01 May 2025)
|
||||
=================
|
||||
|
||||
- Optimize QRColorMask apply_mask method for enhanced performance
|
||||
- Fix typos on StyledPilImage embeded_* parameters.
|
||||
The old parameters with the typos are still accepted
|
||||
for backward compatibility.
|
||||
|
||||
|
||||
8.1 (02 April 2025)
|
||||
====================
|
||||
|
||||
- Added support for Python 3.13.
|
||||
|
||||
8.0 (27 September 2024)
|
||||
========================
|
||||
|
||||
- Added support for Python 3.11 and 3.12.
|
||||
|
||||
- Drop support for Python <=3.8.
|
||||
|
||||
- Change local development setup to use Poetry_.
|
||||
|
||||
- Testsuite and code quality checks are done through Github Actions.
|
||||
|
||||
- Code quality and formatting utilises ruff_.
|
||||
|
||||
- Removed ``typing_extensions`` as a dependency, as it's no longer required
|
||||
with having Python 3.9+ as a requirement.
|
||||
having Python 3.9+ as a requirement.
|
||||
|
||||
- Only allow high error correction rate (`qrcode.ERROR_CORRECT_H`)
|
||||
when generating
|
||||
QR codes with embedded images to ensure content is readable
|
||||
|
||||
.. _Poetry: https://python-poetry.org
|
||||
.. _ruff: https://astral.sh/ruff
|
||||
|
||||
|
||||
7.4.2 (6 February 2023)
|
||||
=======================
|
||||
|
||||
- Allow ``pypng`` factory to allow for saving to a string (like
|
||||
``qr.save("some_file.png")``) in addition to file-like objects.
|
||||
|
||||
|
||||
7.4.1 (3 February 2023)
|
||||
=======================
|
||||
|
||||
- Fix bad over-optimization in v7.4 that broke large QR codes. Thanks to
|
||||
mattiasj-axis!
|
||||
|
||||
|
||||
7.4 (1 February 2023)
|
||||
=====================
|
||||
|
||||
- Restructure the factory drawers, allowing different shapes in SVG image
|
||||
factories as well.
|
||||
|
||||
- Add a ``--factory-drawer`` option to the ``qr`` console script.
|
||||
|
||||
- Optimize the output for the ``SVGPathImage`` factory (more than 30% reduction
|
||||
in file sizes).
|
||||
|
||||
- Add a ``pypng`` image factory as a pure Python PNG solution. If ``pillow`` is
|
||||
*not* installed, then this becomes the default factory.
|
||||
|
||||
- The ``pymaging`` image factory has been removed, but its factory shortcut and
|
||||
the actual PymagingImage factory class now just link to the PyPNGImage
|
||||
factory.
|
||||
|
||||
|
||||
7.3.1 (1 October 2021)
|
||||
======================
|
||||
|
||||
- Improvements for embedded image.
|
||||
|
||||
|
||||
7.3 (19 August 2021)
|
||||
====================
|
||||
|
||||
- Skip color mask if QR is black and white
|
||||
|
||||
|
||||
7.2 (19 July 2021)
|
||||
==================
|
||||
|
||||
- Add Styled PIL image factory, allowing different color masks and shapes in QR codes
|
||||
|
||||
- Small performance inprovement
|
||||
|
||||
- Add check for border size parameter
|
||||
|
||||
|
||||
7.1 (1 July 2021)
|
||||
=================
|
||||
|
||||
- Add --ascii parameter to command line interface allowing to output ascii when stdout is piped
|
||||
|
||||
- Add --output parameter to command line interface to specify output file
|
||||
|
||||
- Accept RGB tuples in fill_color and back_color
|
||||
|
||||
- Add to_string method to SVG images
|
||||
|
||||
- Replace inline styles with SVG attributes to avoid CSP issues
|
||||
|
||||
- Add Python3.10 to supported versions
|
||||
|
||||
|
||||
7.0 (29 June 2021)
|
||||
==================
|
||||
|
||||
- Drop Python < 3.6 support.
|
||||
|
||||
|
||||
6.1 (14 January 2019)
|
||||
=====================
|
||||
|
||||
- Fix short chunks of data not being optimized to the correct mode.
|
||||
|
||||
- Tests fixed for Python 3
|
||||
|
||||
|
||||
6.0 (23 March 2018)
|
||||
===================
|
||||
|
||||
- Fix optimize length being ignored in ``QRCode.add_data``.
|
||||
|
||||
- Better calculation of the best mask pattern and related optimizations. Big
|
||||
thanks to cryptogun!
|
||||
|
||||
|
||||
5.3 (18 May 2016)
|
||||
=================
|
||||
|
||||
* Fix incomplete block table for QR version 15. Thanks Rodrigo Queiro for the
|
||||
report and Jacob Welsh for the investigation and fix.
|
||||
|
||||
* Avoid unnecessary dependency for non MS platforms, thanks to Noah Vesely.
|
||||
|
||||
* Make ``BaseImage.get_image()`` actually work.
|
||||
|
||||
|
||||
5.2 (25 Jan 2016)
|
||||
=================
|
||||
|
||||
* Add ``--error-correction`` option to qr script.
|
||||
|
||||
* Fix script piping to stdout in Python 3 and reading non-UTF-8 characters in
|
||||
Python 3.
|
||||
|
||||
* Fix script piping in Windows.
|
||||
|
||||
* Add some useful behind-the-curtain methods for tinkerers.
|
||||
|
||||
* Fix terminal output when using Python 2.6
|
||||
|
||||
* Fix terminal output to display correctly on MS command line.
|
||||
|
||||
5.2.1
|
||||
-----
|
||||
|
||||
* Small fix to terminal output in Python 3 (and fix tests)
|
||||
|
||||
5.2.2
|
||||
-----
|
||||
|
||||
* Revert some terminal changes from 5.2 that broke Python 3's real life tty
|
||||
code generation and introduce a better way from Jacob Welsh.
|
||||
|
||||
|
||||
5.1 (22 Oct 2014)
|
||||
=================
|
||||
|
||||
* Make ``qr`` script work in Windows. Thanks Ionel Cristian Mărieș
|
||||
|
||||
* Fixed print_ascii function in Python 3.
|
||||
|
||||
* Out-of-bounds code version numbers are handled more consistently with a
|
||||
ValueError.
|
||||
|
||||
* Much better test coverage (now only officially supporting Python 2.6+)
|
||||
|
||||
|
||||
5.0 (17 Jun 2014)
|
||||
=================
|
||||
|
||||
* Speed optimizations.
|
||||
|
||||
* Change the output when using the ``qr`` script to use ASCII rather than
|
||||
just colors, better using the terminal real estate.
|
||||
|
||||
* Fix a bug in passing bytecode data directly when in Python 3.
|
||||
|
||||
* Substation speed optimizations to best-fit algorithm (thanks Jacob Welsh!).
|
||||
|
||||
* Introduce a ``print_ascii`` method and use it as the default for the ``qr``
|
||||
script rather than ``print_tty``.
|
||||
|
||||
5.0.1
|
||||
-----
|
||||
|
||||
* Update version numbers correctly.
|
||||
|
||||
|
||||
4.0 (4 Sep 2013)
|
||||
================
|
||||
|
||||
* Made qrcode work on Python 2.4 - Thanks tcely.
|
||||
Note: officially, qrcode only supports 2.5+.
|
||||
|
||||
* Support pure-python PNG generation (via pymaging) for Python 2.6+ -- thanks
|
||||
Adam Wisniewski!
|
||||
|
||||
* SVG image generation now supports alternate sizing (the default box size of
|
||||
10 == 1mm per rectangle).
|
||||
|
||||
* SVG path image generation allows cleaner SVG output by combining all QR rects
|
||||
into a single path. Thank you, Viktor Stískala.
|
||||
|
||||
* Added some extra simple SVG factories that fill the background white.
|
||||
|
||||
4.0.1
|
||||
-----
|
||||
|
||||
* Fix the pymaging backend not able to save the image to a buffer. Thanks ilj!
|
||||
|
||||
4.0.2
|
||||
-----
|
||||
|
||||
* Fix incorrect regex causing a comma to be considered part of the alphanumeric
|
||||
set.
|
||||
|
||||
* Switch to using setuptools for setup.py.
|
||||
|
||||
4.0.3
|
||||
-----
|
||||
|
||||
* Fix bad QR code generation due to the regex comma fix in version 4.0.2.
|
||||
|
||||
4.0.4
|
||||
-----
|
||||
|
||||
* Bad version number for previous hotfix release.
|
||||
|
||||
|
||||
3.1 (12 Aug 2013)
|
||||
=================
|
||||
|
||||
* Important fixes for incorrect matches of the alphanumeric encoding mode.
|
||||
Previously, the pattern would match if a single line was alphanumeric only
|
||||
(even if others wern't). Also, the two characters ``{`` and ``}`` had snuck
|
||||
in as valid characters. Thanks to Eran Tromer for the report and fix.
|
||||
|
||||
* Optimized chunking -- if the parts of the data stream can be encoded more
|
||||
efficiently, the data will be split into chunks of the most efficient modes.
|
||||
|
||||
3.1.1
|
||||
-----
|
||||
|
||||
* Update change log to contain version 3.1 changes. :P
|
||||
|
||||
* Give the ``qr`` script an ``--optimize`` argument to control the chunk
|
||||
optimization setting.
|
||||
|
||||
|
||||
3.0 (25 Jun 2013)
|
||||
=================
|
||||
|
||||
* Python 3 support.
|
||||
|
||||
* Add QRCode.get_matrix, an easy way to get the matrix array of a QR code
|
||||
including the border. Thanks Hugh Rawlinson.
|
||||
|
||||
* Add in a workaround so that Python 2.6 users can use SVG generation (they
|
||||
must install ``lxml``).
|
||||
|
||||
* Some initial tests! And tox support (``pip install tox``) for testing across
|
||||
Python platforms.
|
||||
|
||||
|
||||
2.7 (5 Mar 2013)
|
||||
================
|
||||
|
||||
* Fix incorrect termination padding.
|
||||
|
||||
|
||||
2.6 (2 Apr 2013)
|
||||
================
|
||||
|
||||
* Fix the first four columns incorrectly shifted by one. Thanks to Josep
|
||||
Gómez-Suay for the report and fix.
|
||||
|
||||
* Fix strings within 4 bits of the QR version limit being incorrectly
|
||||
terminated. Thanks to zhjie231 for the report.
|
||||
|
||||
|
||||
2.5 (12 Mar 2013)
|
||||
=================
|
||||
|
||||
* The PilImage wrapper is more transparent - you can use any methods or
|
||||
attributes available to the underlying PIL Image instance.
|
||||
|
||||
* Fixed the first column of the QR Code coming up empty! Thanks to BecoKo.
|
||||
|
||||
2.5.1
|
||||
-----
|
||||
|
||||
* Fix installation error on Windows.
|
||||
|
||||
|
||||
2.4 (23 Apr 2012)
|
||||
=================
|
||||
|
||||
* Use a pluggable backend system for generating images, thanks to Branko Čibej!
|
||||
Comes with PIL and SVG backends built in.
|
||||
|
||||
2.4.1
|
||||
-----
|
||||
|
||||
* Fix a packaging issue
|
||||
|
||||
2.4.2
|
||||
-----
|
||||
|
||||
* Added a ``show`` method to the PIL image wrapper so the ``run_example``
|
||||
function actually works.
|
||||
|
||||
|
||||
2.3 (29 Jan 2012)
|
||||
=================
|
||||
|
||||
* When adding data, auto-select the more efficient encoding methods for numbers
|
||||
and alphanumeric data (KANJI still not supported).
|
||||
|
||||
2.3.1
|
||||
-----
|
||||
|
||||
* Encode unicode to utf-8 bytestrings when adding data to a QRCode.
|
||||
|
||||
|
||||
2.2 (18 Jan 2012)
|
||||
=================
|
||||
|
||||
* Fixed tty output to work on both white and black backgrounds.
|
||||
|
||||
* Added `border` parameter to allow customizing of the number of boxes used to
|
||||
create the border of the QR code
|
||||
|
||||
|
||||
2.1 (17 Jan 2012)
|
||||
=================
|
||||
|
||||
* Added a ``qr`` script which can be used to output a qr code to the tty using
|
||||
background colors, or to a file via a pipe.
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
../../Scripts/qr.exe,sha256=rvl8j4y_upLjGQpcyfVYdOEBBvY0DgtBbN0DNNjTOks,108402
|
||||
qrcode-8.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
|
||||
qrcode-8.2.dist-info/LICENSE,sha256=QN-5A8lO4_eJUAExMRGGVI7Lpc79NVdiPXcA4lIquZQ,2143
|
||||
qrcode-8.2.dist-info/METADATA,sha256=Oo8b5tqUKLl4BiktBeMUgmS5BTwi55iUkYtnDpMK_DY,17686
|
||||
qrcode-8.2.dist-info/RECORD,,
|
||||
qrcode-8.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
qrcode-8.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
||||
qrcode-8.2.dist-info/entry_points.txt,sha256=jokYBrUZ_Sf1bO7FcE53iIhHYn1CJ9_a5SohTIayOP8,50
|
||||
qrcode/LUT.py,sha256=NjXKPfHSTFYoLlGkXhFjf2OUq_EGD6mrdyYHIG3dNck,3599
|
||||
qrcode/__init__.py,sha256=0C8jx3gDHSJ4yydlHN01ytyipNh2pMO3VYS9Dk-m4oU,645
|
||||
qrcode/__pycache__/LUT.cpython-312.pyc,,
|
||||
qrcode/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/__pycache__/base.cpython-312.pyc,,
|
||||
qrcode/__pycache__/console_scripts.cpython-312.pyc,,
|
||||
qrcode/__pycache__/constants.cpython-312.pyc,,
|
||||
qrcode/__pycache__/exceptions.cpython-312.pyc,,
|
||||
qrcode/__pycache__/main.cpython-312.pyc,,
|
||||
qrcode/__pycache__/release.cpython-312.pyc,,
|
||||
qrcode/__pycache__/util.cpython-312.pyc,,
|
||||
qrcode/base.py,sha256=9J_1LynF5dXJK14Azs8XyHJY66FfTluYJ66F8ZjeStY,7288
|
||||
qrcode/compat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
qrcode/compat/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/compat/__pycache__/etree.cpython-312.pyc,,
|
||||
qrcode/compat/__pycache__/png.cpython-312.pyc,,
|
||||
qrcode/compat/etree.py,sha256=rEyWRA9QMsVFva_9rOdth3RAkRpFOmkF59c2EQM44gE,152
|
||||
qrcode/compat/png.py,sha256=OCe5WsuiTI_UTqmyVqLbcJloSbZvgCYJdMCznKvMCCM,171
|
||||
qrcode/console_scripts.py,sha256=n-bQ5vpKtcjG30l1jkQ_q22HTV4X-JEMwkLRdJno8vc,5558
|
||||
qrcode/constants.py,sha256=0Csa8YYdeQ8NaFrRmt43maVg12O89d-oKgiKAVIO2s4,106
|
||||
qrcode/exceptions.py,sha256=L2fZuYOKscvdn72ra-wF8Gwsr2ZB9eRZWrp1f0IDx4E,45
|
||||
qrcode/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
qrcode/image/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/image/__pycache__/base.cpython-312.pyc,,
|
||||
qrcode/image/__pycache__/pil.cpython-312.pyc,,
|
||||
qrcode/image/__pycache__/pure.cpython-312.pyc,,
|
||||
qrcode/image/__pycache__/styledpil.cpython-312.pyc,,
|
||||
qrcode/image/__pycache__/svg.cpython-312.pyc,,
|
||||
qrcode/image/base.py,sha256=jCrbt4UD1ZfOC8jMFjK3elZfgUJ7M_FsHKRMVvje-BE,4965
|
||||
qrcode/image/pil.py,sha256=y5a3t6VB4gnvsTK4eSR04YEVP_Qk82iT1NXL6jFP1jQ,1589
|
||||
qrcode/image/pure.py,sha256=B8PJANvAHPyd1DaBtAC83Csb2xKbZ-fP4SSWuw1NNvU,1525
|
||||
qrcode/image/styledpil.py,sha256=RC7JoDS-Uzez2nN-I2xwePsGX3qYDeHg8YepT2FbO_M,4951
|
||||
qrcode/image/styles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
qrcode/image/styles/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/image/styles/__pycache__/colormasks.cpython-312.pyc,,
|
||||
qrcode/image/styles/colormasks.py,sha256=h8asIvQKMTRuq6bFzvaiZgFyoa-2tqvIb_hB5H5XwM0,7936
|
||||
qrcode/image/styles/moduledrawers/__init__.py,sha256=Mklw5SjYiGbs2Aym38jwwrKt0plJGzwIVgZ--jiOVBc,430
|
||||
qrcode/image/styles/moduledrawers/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/image/styles/moduledrawers/__pycache__/base.cpython-312.pyc,,
|
||||
qrcode/image/styles/moduledrawers/__pycache__/pil.cpython-312.pyc,,
|
||||
qrcode/image/styles/moduledrawers/__pycache__/svg.cpython-312.pyc,,
|
||||
qrcode/image/styles/moduledrawers/base.py,sha256=gLFq20p07tBEmsFfirEM19XZshYsaNP2Wr1UNAkJq90,1019
|
||||
qrcode/image/styles/moduledrawers/pil.py,sha256=lkT8I8q8PUB_TdYBrP5DlzKN8UtQW-XQEYqoXBWkD7Y,9773
|
||||
qrcode/image/styles/moduledrawers/svg.py,sha256=-WngEvZF8LwtTpWmSdt0tDZ6dKtYzLctYDNY-Mi7crc,3936
|
||||
qrcode/image/svg.py,sha256=G2dmuybVP3fwkgyrFF5RfQT3dpWDCYl80OKe2Xal8gU,5188
|
||||
qrcode/main.py,sha256=OF7uHDAz2Tihpe6Fftef6fiVH2tpoVJ5ekLCIG4lyJA,16869
|
||||
qrcode/release.py,sha256=wJjVEklWnATUh8CU88HEKyhUgZU9hzpl__SZYyyNUZo,1080
|
||||
qrcode/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
||||
qrcode/tests/__pycache__/__init__.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/consts.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_example.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_qrcode.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_qrcode_pil.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_qrcode_pypng.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_qrcode_svg.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_release.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_script.cpython-312.pyc,,
|
||||
qrcode/tests/__pycache__/test_util.cpython-312.pyc,,
|
||||
qrcode/tests/consts.py,sha256=Tn2AbI9zTEi_KiAish6f74AbBWrZg8A-Js8jTrN_vF0,96
|
||||
qrcode/tests/test_example.py,sha256=z5p5Tnumnj0EWsKo6YJ4vuUQM7KjisvgLwbJt8wTAG0,244
|
||||
qrcode/tests/test_qrcode.py,sha256=FPjfdmLAXa0lrbspQXbtD1wPKMggCOPN_O4tT-jLJug,6461
|
||||
qrcode/tests/test_qrcode_pil.py,sha256=m12SfImnfgqzvKmdR4mMQCSVb9GyNnNJ4Edxwjm7tus,5148
|
||||
qrcode/tests/test_qrcode_pypng.py,sha256=fgTr78vX1T_cH03mS_ikHJgoITKLU11bJMXEd0Um5yA,944
|
||||
qrcode/tests/test_qrcode_svg.py,sha256=21enlZjXNUm0M_ZoK_AMp0UE4mELoCeIWE6UveQsJwk,1296
|
||||
qrcode/tests/test_release.py,sha256=SVCXUx4BeNz_d3osbBNdW2N3rstbErGvY5N2V_kHrhc,1341
|
||||
qrcode/tests/test_script.py,sha256=1gchpke_DKZLEhtN5cZJBZTT28fhbjvXfAPttvvM5tA,2908
|
||||
qrcode/tests/test_util.py,sha256=Pgnp1DRFe44YRH9deR9_9Nb9zH-ska61CIYkVWwuy9A,207
|
||||
qrcode/util.py,sha256=VOG4RrJ6QkPs0fLaZkfeMwxwxdIpKsRHm6dXvjo9Yl4,17103
|
||||
@@ -0,0 +1,4 @@
|
||||
Wheel-Version: 1.0
|
||||
Generator: poetry-core 1.9.0
|
||||
Root-Is-Purelib: true
|
||||
Tag: py3-none-any
|
||||
@@ -0,0 +1,3 @@
|
||||
[console_scripts]
|
||||
qr=qrcode.console_scripts:main
|
||||
|
||||
Reference in New Issue
Block a user