Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning 2.0.0.
Release 2.4.2¶
- Relaxed
pyparsing
dependency requirements to allow for use of3.2
and above for supported Python versions. - Relaxed
numpy
dependency requirements to allow for use of2.x
and above for supported Python versions. - Relaxed
pydantic
dependency requirements to allow for use of2.x
and above for supported Python versions. - Relaxed
pillow
dependency requirements to allow for use of8.x
and above for supported Python versions. - Relaxed
click
dependency requirements to allow for use of8.x
and above for supported Python versions. - Relaxed Python version requirement to allow for use of
3.8
and above. - Changed documentation deployment flow to include
latest
,stable
anddev
links.
Release 2.4.1¶
- Added support for comment based attributes (#217)
- Fixed incorrect rotation of rectangle flashes (#243)
- Removed PyYAML dependency (#221)
- Added tests for language server (#227)
- Added tests for console interface (#223)
Release 2.4.0¶
- Added command line interface utilizing API V2 for rendering Gerber files to images. This includes interface for rendering PNG, JPEG and SVG images and multi-file projects to single PNG/JPEG image.
- Added support for inferring file type from file extension or
.FileFunction
file attribute. This mechanism is used by default by API V2 based command line interface. - Refactored test suite and dropped testing of code related to
Parser
class originally included inPyGerber
2.0.0. Currently onlyParser2
related code is actively tested.
Release 2.3.2¶
- Fixed clockwise arc rendering in raster renderer. Reported by @tgbl-mk (#203). Fixed by @Argmaster in #205.
- Fixed empty comment parsing. Reported by @lookme2 (#198). Fixed by @Argmaster in #201.
- Disabled MacOS test suite due to consistent failures during Python installation on
macos-latest
GitHub hosted machines.
Release 2.3.1¶
- Added support for rotation of code 21 center line macro primitive in SVG and Raster renderers. Support is not exhaustive, it will be extended whenever extension is requested by users.
- Fixed bug causing macro flashes to be partially cut off in images rendered with SVG renderer.
- Fixed incorrect version string in
pygerber.__version__
and reported bypygerber --version
.
Release 2.3.0¶
- Added full support for transforms (LP, LM, LR, LS commands) in Parser2.
- Fixed titles in Parser2 and Parser feature support documentation. They were swapped.
- Fixed bug causing SvgRenderer2 to incorrectly render masks in some cases.
- Optimized SvgRenderer2 group and mask usage to reduce file size and memory usage of software displaying output SVGs.
- Fixed parsing of attributes without value.
- Updated documentation to mention deprecation of API V1 elements and changed order of pages to better expose API V2.
- Added example files shipped with PyGerber for testing and demonstration purposes. They
can be accessed via
pygerber.examples
module. - Added new
pygerber.gerberx3.api.v2
module with new high level utilizing API V2 capabilities. This module is mend to replace API V1 in future releases. - Added new API for rendering multiple Gerber files at once into single image. Available
as part of
pygerber.gerberx3.api.v2
module with use ofProject
class.
Release 2.2.1¶
- Fixed rendering of first macro flash.
- Added reference page for SvgRenderer2 in docs.
- Fixed duplicated element prefixes in docs.
- Fixed supported feature counts in docs.
- Updated
README.md
feature support links.
Release 2.2.0¶
- Added alternative parser implementation,
pygerber.gerberx3.parser2.parser2.Parser2
class. - Added introspection interface based on new Parser2 class.
- Added macro support to Parser2 class which was not previously available in Parser class.
- Added API for customizing Token classes used by Tokenizer.
Tokenizer
class now accepts optionaloptions
parameter of classTokenizerOptions
. - Added documentation for introspection.
- Added experimental SVG backend for Gerber code with Parser2 generated command buffers.
- Changed documentation layout to improve readability.
- Fixed switching to single quadrant mode being ignored.
- Refactored feature support documentation.
Release 2.1.1¶
- Fixed incorrect bounding box prediction for displaced drawings (#105).
- Added 3.12 as supported in package tags.
- Fixed documentation links in
README.md
andpyproject.toml
.
Release 2.1.0¶
- Fixed #37
- Added latest Gerber spec file revision 2023.08 to documentation.
- Added command line interface for PyGerber 2D rendering.
- Added Gerber X3/X2 language server which can be acquired with
pip install pygerber[language-server]
. Currently server capabilities include hover messages with Gerber reference cited and minimal amount of suggestions. We are planning to further extend this server in future releases. - Added
is-language-server-available
CLI command for checking ifpygerber[language-sever]
is available. - Added support for arc region boundaries (#61).
- Added warning messages whenever zero surface flash is created.
- Improved documentation for many of supported Gerber commands. This documentation is used by language server to provide specification reference.
- Refactored tokenizer implementation, as a result #67 was fixed and #64 is no longer an issue in some cases.
Release 2.0.2¶
- Fixed incorrect bounding box prediction for displaced drawings (#105).
- Added 3.12 as supported in package tags.
- Fixed documentation links in
README.md
andpyproject.toml
.
Release 2.0.1¶
- Fixed names of Gerber specification files (
.pdf.pdf
extension replaced with.pdf
) - Added
draw_region_outlines
option (disabled by default) which controls whether lines which make up a region boundary should be drawn after region is filled. KiCAD seem to assume that those boundaries are not drawn and region outline is 1px instead of thickness of aperture. - Changed
Decimal
precision to 60 decimal places. - Changed precision of
INCH_TO_MM_MULTIPLIER
(now its 25.4) andMM_TO_INCH_MULTIPLIER
(dynamically calculated withDecimal
). - Changed circle aperture to make result better match expectations and
KiCAD
reference. - Fixed warning message logged every time a valid region was created to show up only when region is not valid.
- Added warnings for zero surface aperture draws.
Release 2.0.0¶
-
Added Gerber X3 format tokenizer with support for selective feature support:
-
Supported Gerber X3 features:
G04
,MO
,FS
,AD
,AM
,Dnn
(nn≥10),D01
,D02
,D03
,G01
,G02
,G03
,G75
,LP
,LM
,LR
,LS
,G36
,G37
,AB
,SR
,TF
,TA
,TO
,TD
,M02
. -
Supported DEPRECATED Gerber features:
G54
,G70
,G71
,G90
,G91
,G74
,M00
,M01
,IP
,LN
,Combining G01/G02/G03 and D01/D02/D03 in a single command
,Coordinate Data without Operation Code
,Style Variations in Command Codes
,FS
,Draws and Arcs with Rectangular Apertures
.
For more detailed descriptions of supported features please refer to documentation or README.md.
-
Added Gerber X3 format parser with support for selective feature support:
-
Supported Gerber X3 features:
G04
,MO
,FS
,AD
,AM
,Dnn
(nn≥10),D01
,D02
,D03
,G01
,G02
,G03
,G75
,LP
,LM
,LR
,LS
,G36
,G37
,M02
. -
Supported DEPRECATED Gerber features:
G54
,G70
,G71
,G90
,G91
,G74
,M00
,M01
,IP
,LN
,Combining G01/G02/G03 and D01 in a single command
,Coordinate Data without Operation Code
,Style Variations in Command Codes
,Draws and Arcs with Rectangular Apertures
.
For more detailed descriptions of supported features please refer to documentation or README.md.
- Added rendering backend capable of producing 2D rasterized images based on parser instructions. Supported drawing elements:
- Aperture definition with circle
- Aperture definition with rectangle
- Aperture definition with obround
- Aperture definition with polygon
- Draw flash with circle aperture
- Draw flash with rectangle aperture
- Draw flash with obround aperture
- Draw flash with polygon aperture
- Draw line
- Draw clockwise arc
- Draw counterclockwise arc