Releases: mmulqueen/pyStrich
Releases · mmulqueen/pyStrich
0.14
0.13
- QR Code: accepts any Unicode string and picks the best encoding
automatically (ASCII, Latin-1 or UTF-8). New
:class:~pystrich.qrcode.QRCodeDataexposes explicit charset control
when you need it. - QR Code: internal refactor to improve the encoder's spec compliance
and to share Reed-Solomon and encoding-selection code with
the Data Matrix module. - Data Matrix:
TextEncoder.encode()returnslist[int]instead of
astrofchr()-packed bytes. - Data Matrix: support all 24 ECC200 square symbol sizes up to 144x144
(1558 data codewords), with interleaved Reed-Solomon blocks for the
larger symbols. Previously capped at 48x48 (174 codewords). - Data Matrix: fix the bottom-right corner-module pattern for sizes
where it was previously emitted as four zero cells, and fix
pad-codeword randomisation to produce the correct value at the
position-28 boundary. - Code 128: unencodable characters now raise
:class:~pystrich.exceptions.PyStrichInvalidInputinstead of being
logged and failing later withKeyError. - Code 39: non-ASCII input under
full_ascii=Truenow raises
:class:~pystrich.exceptions.PyStrichInvalidInputinstead of an
unwrappedUnicodeEncodeError. - Typing: the entire
pystrichpackage is now checked with mypy;
the remaining per-moduleignore_errorsoverrides have been removed.
0.12
- New pystrich console script with a subcommand per format and PNG / SVG / EPS / ASCII / terminal / DXF output. See Command-line interface.
- Data Matrix: DataMatrixData now expects either an encoding= argument or auto_encoding=True to be set on construction. The new auto_encoding=True flag picks the narrowest encoding.
- SVG output for QR Code and Data Matrix via new save_svg / get_svg methods on QRCodeEncoder and DataMatrixEncoder.
- SVG output for the 1D barcodes via the same save_svg / get_svg methods on Code39Encoder, Code128Encoder and EAN13Encoder.
- EPS output for QR Code and Data Matrix via new save_eps / get_eps methods on the same classes.
- EPS output for the 1D barcodes via the same save_eps / get_eps methods on Code39Encoder, Code128Encoder and EAN13Encoder.
- The human-readable labels for 1D barcodes are rendered with bundled Courier Prime glyph outlines (SIL Open Font License).
- DXF: get_dxf() on QRCodeEncoder and DataMatrixEncoder now writes the correct $INSUNITS value for "in", "ft", "mi", "cm" and "m" (previously any value other than "mm" was silently treated as unspecified); you should now pass units=None if unspecified is desired.
- All vector outputs accept a mark_shape keyword argument (MarkShape) selecting how matched cells are grouped and drawn: horizontal runs (the SVG / EPS default), one square mark per cell (the DXF default), or one filled circle per cell.
- Tests: round-trip DXF coverage for QR Code and Data Matrix – the rendered DXF is read with ezdxf, rasterised, and decoded back to the original string.
- New get_terminal_art method on QRCodeEncoder and DataMatrixEncoder, rendering the symbol with Unicode half-block characters so it scans on screen. ANSI background/foreground codes are applied by default for readability on any terminal theme; pass ansi_bg=False for plain output.
0.11
- Documentation: full Sphinx-built docs are now published at https://www.method-b.uk/pyStrich/docs/, covering each symbology, recipes and printing guidance, exception hierarchy and a reference index.
- DataMatrix: add explicit "iso-8859-1" and "utf-8" encodings for non-ASCII payloads, selectable via DataMatrixData.
- DataMatrix: saner handling of non-ASCII input under the legacy "compat" encoding, with deprecation in favour of explicit encodings.
- DataMatrix: proper FNC1 support via the FNC1 marker constant. The long-accepted chr(231) workaround for GS1 still works behind a Fnc1WorkaroundCompatWarning (see issue #13).
- QR Code: fix issue #8; certain valid strings could not generate a QR code.
- EAN-13 quiet zone is now 11 modules left, 7 modules right (per the GS1 General Specifications); previously 9 modules each side, which was below spec on the left.
- EAN-13: the leading digit’s vertical position is now configurable via an options dict (first_digit_y_offset); pass 0 for a level baseline across all three digit groups (issue #18). The default preserves the classic look where the first digit is slightly higher.
- Errors: unified exception hierarchy. All pyStrich-raised errors now inherit from PyStrichError.
- Public get_pilimage method on every encoder, returning a PIL.Image.Image directly.
- Typing: encoders and renderers now have type hints and are checked with mypy.
- Tests: refactored test suite to make better use of pytest, and extended encode/decode round-trip test coverage to Code 39, Code 128, EAN-13 and QR Code (previously DataMatrix only).
- Confirmed compatibility with newer Pillow versions and Python 3.13.
- Drop support for Python 3.8 and 3.9. Supported versions are now Python 3.10 to 3.14.
v0.10
Modernise
0.7
This time with fonts and data.
0.6 Remove test relying on dmtxwrite due to issues in last commit.
First working version on PyPI
0.4 Fixed setup.py so PyPI package isn't broken.