executablebooks / rst-to-myst

Convert ReStructuredText to MyST Markdown
https://rst-to-myst.readthedocs.io
MIT License
64 stars 11 forks source link

⬆️ Update markdown-it-py requirement from ~=2.0 to ~=3.0 #72

Open dependabot[bot] opened 1 year ago

dependabot[bot] commented 1 year ago

Updates the requirements on markdown-it-py to permit the latest version.

Release notes

Sourced from markdown-it-py's releases.

v3.0.0 Release

⚠️ This release contains some minor breaking changes in the internal API and improvements to the parsing strictness.

Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0

⬆️ UPGRADE: Drop support for Python 3.7

Also add testing for Python 3.11

⬆️ UPGRADE: Update from upstream markdown-it 12.2.0 to 13.0.0

A key change is the addition of a new Token type, text_special, which is used to represent HTML entities and backslash escaped characters. This ensures that (core) typographic transformation rules are not incorrectly applied to these texts. The final core rule is now the new text_join rule, which joins adjacent text/text_special tokens, and so no text_special tokens should be present in the final token stream. Any custom typographic rules should be inserted before text_join.

A new linkify rule has also been added to the inline chain, which will linkify full URLs (e.g. https://example.com), and fixes collision of emphasis and linkifier (so http://example.org/foo._bar_-_baz is now a single link, not emphasized). Emails and fuzzy links are not affected by this.

  • ♻️ Refactor backslash escape logic, add text_special #276
  • ♻️ Parse entities to text_special token #280
  • ♻️ Refactor: Add linkifier rule to inline chain for full links #279
  • ‼️ Remove (p) => § replacement in typographer #281
  • ‼️ Remove unused silent arg in ParserBlock.tokenize #284
  • 🐛 FIX: numeric character reference passing #272
  • 🐛 Fix: tab preventing paragraph continuation in lists #274
  • 👌 Improve nested emphasis parsing #273
  • 👌 fix possible ReDOS in newline rule #275
  • 👌 Improve performance of skipSpaces/skipChars #271
  • 👌 Show text of text_special in tree.pretty #282

♻️ REFACTOR: Replace most character code use with strings

The use of StateBase.srcCharCode is deprecated (with backward-compatibility), and all core uses are replaced by StateBase.src.

Conversion of source string characters to an integer representing the Unicode character is prevalent in the upstream JavaScript implementation, to improve performance. However, it is unnecessary in Python and leads to harder to read code and performance deprecations (during the conversion in the StateBase initialisation).

See #270, thanks to @​hukkinj1.

♻️ Centralise indented code block tests

For CommonMark, the presence of indented code blocks prevent any other block element from having an indent of greater than 4 spaces. Certain Markdown flavors and derivatives, such as mdx and djot, disable these code blocks though, since it is more common to use code fences and/or arbitrary indenting is desirable. Previously, disabling code blocks did not remove the indent limitation, since most block elements had the 3 space limitation hard-coded. This change centralised the logic of applying this limitation (in StateBlock.is_code_block), and only applies it when indented code blocks are enabled.

... (truncated)

Changelog

Sourced from markdown-it-py's changelog.

3.0.0 - 2023-06-03

⚠️ This release contains some minor breaking changes in the internal API and improvements to the parsing strictness.

Full Changelog: https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0

⬆️ UPGRADE: Drop support for Python 3.7

Also add testing for Python 3.11

⬆️ UPGRADE: Update from upstream markdown-it 12.2.0 to 13.0.0

A key change is the addition of a new Token type, text_special, which is used to represent HTML entities and backslash escaped characters. This ensures that (core) typographic transformation rules are not incorrectly applied to these texts. The final core rule is now the new text_join rule, which joins adjacent text/text_special tokens, and so no text_special tokens should be present in the final token stream. Any custom typographic rules should be inserted before text_join.

A new linkify rule has also been added to the inline chain, which will linkify full URLs (e.g. https://example.com), and fixes collision of emphasis and linkifier (so http://example.org/foo._bar_-_baz is now a single link, not emphasized). Emails and fuzzy links are not affected by this.

  • ♻️ Refactor backslash escape logic, add text_special #276
  • ♻️ Parse entities to text_special token #280
  • ♻️ Refactor: Add linkifier rule to inline chain for full links #279
  • ‼️ Remove (p) => § replacement in typographer #281
  • ‼️ Remove unused silent arg in ParserBlock.tokenize #284
  • 🐛 FIX: numeric character reference passing #272
  • 🐛 Fix: tab preventing paragraph continuation in lists #274
  • 👌 Improve nested emphasis parsing #273
  • 👌 fix possible ReDOS in newline rule #275
  • 👌 Improve performance of skipSpaces/skipChars #271
  • 👌 Show text of text_special in tree.pretty #282

♻️ REFACTOR: Replace most character code use with strings

The use of StateBase.srcCharCode is deprecated (with backward-compatibility), and all core uses are replaced by StateBase.src.

Conversion of source string characters to an integer representing the Unicode character is prevalent in the upstream JavaScript implementation, to improve performance. However, it is unnecessary in Python and leads to harder to read code and performance deprecations (during the conversion in the StateBase initialisation).

See #270, thanks to @​hukkinj1.

♻️ Centralise indented code block tests

For CommonMark, the presence of indented code blocks prevent any other block element from having an indent of greater than 4 spaces. Certain Markdown flavors and derivatives, such as mdx and djot, disable these code blocks though, since it is more common to use code fences and/or arbitrary indenting is desirable. Previously, disabling code blocks did not remove the indent limitation, since most block elements had the 3 space limitation hard-coded. This change centralised the logic of applying this limitation (in StateBlock.is_code_block), and only applies it when indented code blocks are enabled.

... (truncated)

Commits
  • bee6d19 🚀 RELEASE: v3.0.0 (#286)
  • e146728 📚 Update docs (#285)
  • 4c3a34d ‼️ Remove unused silent arg in ParserBlock.tokenize (#284)
  • 90b367d 🔧 Add typing of rule functions (#283)
  • 64965cf 👌 Show text of text_special in tree.pretty (#282)
  • dd51f62 ‼️ Remove (p) => § replacement in typographer (#281)
  • d5b3874 ♻️ Parse entities to text_special token (#280)
  • ea27cc8 ♻️ Refactor: Add linkifier rule to inline chain for full links (#279)
  • ba96f34 ♻️ Refactor backslash escape logic (#276)
  • 500e69e 👌 fix possible ReDOS in newline rule (#275)
  • Additional commits viewable in compare view


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)