[glifLib] Wrap XML library exceptions with glifLib types when parsing glifs #3029
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello!
This PR abstracts across XML library exceptions with glifLib errors when parsing glyphs, which allows dependent projects to catch syntax errors without requiring logic to account for which XML library fonttools is using internally (e.g. for implementing fonttools/ufoLib2#264).
The PR also also adds tests to ensure that the exception we expose remains stable across future releases.
Affected functions
glifLib.readGlyphFromString()
glifLib.GlyphSet.readGlyph()
Alternative
If we wanted to abstract over lxml/xml exceptions more broadly, we could catch them in
etree.py
and wrap them with a fonttools-specific XmlParsingError; this would also have the cost of maintaining wrapper functions (e.g. foretree.fromstring()
) where there currently are none.