mdx_gist: inherit from InlineProcessor, work on Python 3.11 (#3630) #3631
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.
The gist-rst pattern crashes Python 3.11, because its pattern
tries to set the multiline flag - it starts with
(?m)
- butMarkdown's
Pattern
class__init__
, which is called by ourGistPattern.__init__
, 'wraps' the pattern with additionalcapture groups before compiling it. This causes the multiline
flag not to be at the start of the 'wrapped' pattern. From
Python 3.6 to Python 3.10 flags not being at the start of the
pattern was deprecated and triggered a warning when trying to
compile it; in Python 3.11 it's an error.
Markdown 3.0.0 added a preferred
InlineProcessor
class:Python-Markdown/markdown#629
which does not do this wrapping. It requires the subclass to
implement
handleMatch
, which we already do. OurhandleMatch
uses named capture groups, so the change in the number of
capture groups in the compiled expression shouldn't matter. So
simply switching to inheriting from
InlineProcessor
insteadof
Pattern
should solve the problem.We already required Markdown 3.0.0, so this does not mean we
require a newer Markdown than before.
Signed-off-by: Adam Williamson awilliam@redhat.com
Pull Request Checklist
Description
Change seems fairly trivial and should not be visible to users, so I didn't bother with AUTHORS and CHANGES. I've 'tested' this insofar as nikola now at least passes its own test suite with Python 3.11 (it did not before); the test suite does not seem to cover this file, so I don't think we'll know if it's broken, but I don't think it should be.