NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3574 most downloaded on PyPI
Svg Elements Parsing
Last release 3 years ago
no release in 18 months
Ships fairly regularly
a new release about every 5 weeks
Most releases are documented
notes for 49 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
68 releases · first in 2019
Issue 239: Embedded Image Newlines by @tatarize in https://github.com/meerk40t/svgelements/pull/240
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.5...1.9.6
Fixed issue #232, which dates back to the start of Path.npoint whereby if a segment is not used it doesn't calculate but then also fails to count towa
One column per quarter.
Fixed issue #232, which dates back to the start of Path.npoint whereby if a segment is not used it doesn't calculate but then also fails to count towards the total length.
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.4...1.9.5
Fixed issue #232, which dates back to the start of Path.npoint whereby if a segment is not used it doesn't calculate but then also fails to count towards the total length.
Full Changelog: 1.9.4...1.9.5
Check for remaining issues related to #228 by @tatarize in https://github.com/meerk40t/svgelements/pull/229
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.3...1.9.4
Full Changelog: 1.9.3...1.9.4
Correct (optionally) Issue #217 by @tatarize in https://github.com/meerk40t/svgelements/pull/218
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.2...1.9.3
Full Changelog: 1.9.2...1.9.3
Update unittests.yml, ubuntu-latest, python 3.11, etc. by @tiger12506 in https://github.com/meerk40t/svgelements/pull/225
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.1...1.9.2
Full Changelog: 1.9.1...1.9.2
Add Matrix.map() and Matrix.perspective() class creation methods for Matrix. by @tatarize in https://github.com/meerk40t/svgelements/pull/215
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.9.0...1.9.1
Strictly speaking this is not a breaking change but if you want to use write_xml it's much easier to have a major demarcation for the code.
Strictly speaking this is not a breaking change but if you want to use write_xml it's much easier to have a major demarcation for the code.
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.8.4...1.9.0
Non-scaling strokes were not handled correctly for the stroke widths if there was a viewport scale in addition to element scaling. The handling in Chr
Non-scaling strokes were not handled correctly for the stroke widths if there was a viewport scale in addition to element scaling. The handling in Chrome and Inkscape is clear that the viewport scaling is scaled even if Non-scaling Strokes is set.
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.8.3...1.8.4
Non-scaling strokes were not handled correctly for the stroke widths if there was a viewport scale in addition to element scaling. The handling in Chrome and Inkscape is clear that the viewport scaling is scaled even if Non-scaling Strokes is set.
Full Changelog: 1.8.3...1.8.4
Add Use.bbox() by @ptomulik in https://github.com/meerk40t/svgelements/pull/198
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.8.2...1.8.3
If you rotate the bounding box of a circle and take the bounding box of the rotated bounding box it's not the same as the actual union of the bounds.
If you rotate the bounding box of a circle and take the bounding box of the rotated bounding box it's not the same as the actual union of the bounds. This corrects that oversight.
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.8.1...1.8.2
Corrects some uses of use specifically #170 which was not previously correctly fixed.
Corrects some uses of use specifically #170 which was not previously correctly fixed.
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.8.0...1.8.1
This version include #160 which fixes #170, #169, and #192. Rather the parsing routine does a semi-parse which allows for the integration of use objec
This version include #160 which fixes #170, #169, and #192. Rather the parsing routine does a semi-parse which allows for the integration of use objects more directly into nodes. This also permits use objects to occur before the object they are using. This adds a Use object to the list which is a mostly a list containing the one element referred to in the use as a child.
This is a breaking change.
Use object as a parent.values['attributes'] will no longer have processed style elements. These will be processed in the values directly but not in attributes.Use objects could have given you different results, namely wrong results, and now they would be correct.Full Changelog: https://github.com/meerk40t/svgelements/compare/1.7.5...1.8.0
This is as rare as it sounds. If you attempted to segment a path like M0,0zM1,1z with the npoint() code it would fail. There's a rare fallback when to
This is as rare as it sounds. If you attempted to segment a path like M0,0zM1,1z with the npoint() code it would fail. There's a rare fallback when total length equals zero (and there exists segments). But, this was not properly fixed for use with numpy.
npoint() zero length fallback by @tatarize in https://github.com/meerk40t/svgelements/pull/191Full Changelog: https://github.com/meerk40t/svgelements/compare/1.7.4...1.7.5
Correct fractional point sizing for fonts by @tatarize in https://github.com/meerk40t/svgelements/pull/190
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.7.2...1.7.4
While not specifically referenced in CSS the actual testing quickly showed that short hand font names are overwhelmingly tagged with '' quote text. Th
While not specifically referenced in CSS the actual testing quickly showed that short hand font names are overwhelmingly tagged with '' quote text. This didn't seem to be indicated in my initial reading of the spec, but in practice is quite common.
Typo in the default family for fonts without a declared family.
Typo in the default family for fonts without a declared family.
All breaking changes (hence 1.7.0) are confined to the text object parsing and interactions with text objects.
All breaking changes (hence 1.7.0) are confined to the text object parsing and interactions with text objects.
pt and pxFull Changelog: https://github.com/meerk40t/svgelements/compare/1.6.17...1.7.0
Add option for parsing display none in SVG.parse by @tatarize in https://github.com/meerk40t/svgelements/pull/184
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.6.16...1.6.17
Correctly process two edge cases of arc parameterization via control points.
<style> blocks to avoid processing commented out CSS or failing to find assignments that were otherwise valid.Font-weight if not an int would be converted but threw the wrong type of error to be caught.
Jpirnay fixed a bug where a references CSS style if it was missing a ; would not correctly concat with attribute level styles.
; would not correctly concat with attribute level styles.Full Changelog: https://github.com/meerk40t/svgelements/compare/0.6.13...1.6.14
Nothing published for this version
Subpaths of degenerate paths no longer crash with unbounded local. This bug was introduced in #134 and those changes were manually reverted.
The length of a copy of a polygon of a single point correctly preserves that single point in the copy. Previous versions would create a 0-point polygo
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.6.10...1.6.11
Fix Angle.as_radians by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/167
Angle.as_radians returns a explicit float.
<svg width=100vh> like units now correctly work as the viewport is passed to the length values
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.6.9...1.6.10
Nothing published for this version
Adds in BGR color references. This component order is seen in some systems like wxPython.
Corrects image render issue with a typo added in 1.6.6
Corrects image render issue with a typo added in 1.6.6
Text ids set by value would not set by value because the was no call to SVGElement value set routine.
Text ids set by value would not set by value because the was no call to SVGElement value set routine.
with_stroke no longer adds stroke to bbox if the stroke is set to none or is unset.
with_stroke no longer adds stroke to bbox if the stroke is set to none or is unset.Adds in robust dataurl parsing, Support data:image/bmp;base64 #133
1.6.4 Maintainence by @tatarize in https://github.com/meerk40t/svgelements/pull/151
Implement code quality checks for svgelements by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/141
Add with_stroke to Subpath bbox. by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/135
Reimplement pylint sections of pyproject.toml by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/142
Unittests only with scipy & numpy by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/143
Label pull requests by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/145
Enable failure code for lints by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/144
2nd attempt at labelling by @Sophist-UK in https://github.com/meerk40t/svgelements/pull/146
Full Changelog: https://github.com/meerk40t/svgelements/compare/1.6.3...1.6.4
This version permits the calculation of bounding boxes with the given stroke-width values, for transformed and non-transformed shapes.
This version permits the calculation of bounding boxes with the given stroke-width values, for transformed and non-transformed shapes.
The goal of this is to provide a bounding box sufficient to capture not only the shape but the full displayed shape.
This version also includes some other minor changes to __repr__ for the various objects.
If the slope is like 1e-15 close to zero it can cause the calculated center to move a bit.
If the slope is like 1e-15 close to zero it can cause the calculated center to move a bit.
SVGImage and SVGText were renamed with strong backwards compatible assignments to Image and Text. The potential for that to break compatibility is the
SVGImage and SVGText were renamed with strong backwards compatible assignments to Image and Text.
The potential for that to break compatibility is the reason for the this goes to 1.6.0 rather than 1.5.7. No testing found any breaks. If you import * the existence of svgelements.Image could mess with PIL namespaces. If you import correctly this should not be an issue.
The rest of this version is __repr__ corrections for the minor objects and coverage for those.
Correct repr() values Added a few __eq__() functions. Correct degenerate width-less Rect.
Correct repr() values
Added a few __eq__() functions.
Correct degenerate width-less Rect.
Fallback if scipy failed for any reason (it's not a requirement, but having it makes some math easier).
rect of unknown size with unknown rounded corners would valueError on the length math without the conversions being known.._strict value set to True. Could permit some non-spec behaviors in the future.Correct Attributes-id bug in parsing end (could cause crashes during parsing)
attributes to .values, was otherwise unable to see what values that node originally had without cascading if a looking for a custom value.A copy of SVGText object or a copy of a Group object didn't call the SVGElement defines to set the value of .values and .id instead leaving these with
A copy of SVGText object or a copy of a Group object didn't call the SVGElement defines to set the value of .values and .id instead leaving these with None value.
Color can now accept keyword args with colors eg Color('red', alpha=180)
Color('red', alpha=180)Color(0xFF0000, 0.5) is half opaque red.Color(argb=0xFF00FF)hue, saturation, lightness and alpha..argb, .rgb and .rgba properties. These can be set: color.argb = 0xFF0000FFColor.hsl_to_int does not require creating a Color object. hsl init, calls the function..hue had a bug which gave the hue in turns. It should have given hue in degrees.Major version bump, because this is a slightly breaking change as int(color) will now produce RGBA. If you convert colors with the .red .blue .green a…
Corrects #109 with PR #110
@Lofgren correctly noted the CSS color definitions are RGBA and not ARGB. Especially regarding the parsing of 4 and 8 digit hex values this was parsed contrary to spec.
Major version bump, because this is a slightly breaking change as int(color) will now produce RGBA. If you convert colors with the .red .blue .green and .alpha the code will work the same. However if you converted to int(color) using or using .value within the color, the internal data value is now RGBA.
Some legacy code was eliminated.
The ability to perform t = Group() * Matrix() resulted in a crash due to it not initializing the copy() of the Group's .transform value.
The ability to perform t = Group() * Matrix() resulted in a crash due to it not initializing the copy() of the Group's .transform value.
Corrects #101, #103, #104, #105 .
Corrects #101, #103, #104, #105 .
Degenerate objects are now omitted. If they should not be rendered they are not parsed. Path bbox is corrected. The library previously used a short-hand method that did not work. CSS classes value sharing and overwriting now works correctly. ID within value but not attribute does not crash the element_by_id lookup.
Corrects the reification of inverted shapes. Issue #99
Corrects the reification of inverted shapes. Issue #99
Corrects .bbox() for paths with degenerate arcs and degenerate arcs themselves.
.bbox() for paths with degenerate arcs and degenerate arcs themselves.Corrects Issue 95. Multiple Reification of Stroke-Width for Skewed Matrices.
Group a static function for bbox.Color now can use long and correct for it rather than cheating and keeping shorts.Color accepts String of integer.Nothing published for this version
Nothing published for this version
Enacting very temporary support of Python 2.7. Merry Christmas!
Enacting very temporary support of Python 2.7. Merry Christmas!
This will be removed from the next version. (though the code will likely not be changed).
Nothing published for this version
* Fix a small Fill Opacity bug.
Desc added. SVGDesc is deprecated.
Numpy in header was too inclusive. Moved the includes to the npoint blocks, so it will not try to do the include if the program being used doesn't try
Numpy in header was too inclusive. Moved the includes to the npoint blocks, so it will not try to do the include if the program being used doesn't try to use those features.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Speedup for Cubic Length if Scipy is installed. (Thanks to @abey79)
; token between them.Nothing published for this version
Coord values without points raise ValueErrors. Path("sn") will throw an error rather than create a faulty object.
sqrt(abs(det)) of the matrix.-1 as could happen in Path.extend() on an empty path._ramanujan_length value.currentcolor, these values match the svg spec.Your coding agent can read these notes before it upgrades. Set up the MCP server →