Releases: executablebooks/markdown-it-py
v4.0.0
What's Changed
This primarily drops support for Python 3.8 and 3.9, adds support for Python 3.13,
and updates the parser to comply with Commonmark 0.31.2 and Markdown-It v14.1.0.
Upgrades
- ⬆️ Drop Python 3.8, test 3.13 by @chrisjsewell in #342
- ⬆️ Drop support for Python 3.9 by @chrisjsewell in #360
- ⬆️ Comply with Commonmark 0.31.2 by @chrisjsewell in #362
Improvements
- 👌 Improve performance of "text" inline rule by @hukkin in #347
- 👌 Use
str.removesuffix
by @hukkin in #348 - 👌 limit the number of autocompleted cells in a table by @chrisjsewell in #364
- 👌 fix quadratic complexity in reference parser by @chrisjsewell in #367
Bug fixes
Maintenance
- 🔧 Replace black and isort with ruff formatter by @chrisjsewell in #313
- 🔧 Fixed Code Style paragraph still referring to flake8 by @venthur in #309
- 🔧 Add "store_labels" to OptionsType by @chrisjsewell in #343
- 🔧 Move
code_style
to dependency group by @chrisjsewell in #344 - 🔧 Update codecov action by @chrisjsewell in #345
- 🔧 Update pre-commit and upload-artifact by @chrisjsewell in #359
- 🔧 Improve spec update script by @chrisjsewell in #361
- 🔧 simplify logic in scanDelims by @chrisjsewell in #365
- 🧪 Add CI testing for Python 3.12 by @hugovk in #303
- 🧪 Fix codecov by @chrisjsewell in #332
Documentation
- 📚 Fix typo by @bwagner in #315
- 📚 Fix RTD build by @chrisjsewell in #322
- 📚 DOCS: Fix a few old URLs by @elijahgreenstein in #358
- 📚 Improve README by @mrmurilo75 in #340
- 📚 Fix CI badge link by @tsutsu3 in #291
- 📚 Update docs by @chrisjsewell in #292
- 📚 Add icon to readme by @chrisjsewell in #293
- 📚 Update icon by @chrisjsewell in #294
- 📚 DOCS: Clarify docs regarding security configuration by @djramones in #296
- 📚 Fix the RTD build by @chrisjsewell in #311
- 📚 DOCS: Fix typos by @elijahgreenstein in #366
New Contributors
- @djramones made their first contribution in #296
- @venthur made their first contribution in #309
- @hugovk made their first contribution in #303
- @bwagner made their first contribution in #315
- @mrmurilo75 made their first contribution in #340
- @elijahgreenstein made their first contribution in #358
Full Changelog: v3.0.0...v4.0.0
v3.0.0
v3.0.0 Release
Full Changelog: 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 unusedsilent
arg inParserBlock.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
intree.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.
This allows for e.g.
<div>
<div>
I can indent as much as I want here.
<div>
<div>
See #260
🔧 Maintenance changes
Strict type annotation checking has been applied to the whole code base,
ruff is now used for linting,
and fuzzing tests have been added to the CI, to integrate with Google OSS-Fuzz testing, thanks to @DavidKorczynski.
v2.2.0
What's Changed
- ⬆️ UPGRADE: Allow linkify-it-py v2 by @hukkin in #218
- 🐛 FIX: CVE-2023-26303 by @chrisjsewell in #246
- 🐛 FIX: CLI crash on non-utf8 character by @chrisjsewell in #247
- 📚 DOCS: Update the example by @redstoneleo in #229
- 📚 DOCS: Add section about markdown renderer by @holamgadol in #227
- 🔧 Create SECURITY.md by @chrisjsewell in #248
- 🔧 MAINTAIN: Update mypy's additional dependencies by @hukkin in #217
- Fix typo by @jwilk in #230
- 🔧 Bump GH actions by @chrisjsewell in #244
- 🔧 Update benchmark pkg versions by @chrisjsewell in #245
New Contributors
Thanks to 🎉
- @jwilk made their first contribution in #230
- @holamgadol made their first contribution in #227
- @redstoneleo made their first contribution in #229
Full Changelog: v2.1.0...v2.2.0
v2.1.0
What's Changed
- 🔧 MAINTAIN: Add a profiler tox env by @hukkin in #197
- 🔧 MAINTAIN: Update performance benchmark by @hukkin in #196
- ✨ NEW: Save ordered list numbering by @hukkin in #192
- ⬆️ UPGRADE: Drop support for EOL Python 3.6 by @hukkin in #194
- 🧪 TEST: Space in link destination generates
IndexError
by @mib112 in #206 - 📚 DOCS: Fix typos by @kianmeng in #203
- 🔧 MAINTAIN: Move from setuptools to flit by @chrisjsewell in #208
- 📚 DOCS: Fix build by @chrisjsewell in #209
- 🔧 MAINTAIN: Add isort hook by @chrisjsewell in #210
- ♻️ REFACTOR: Move internal
Rule
/Delimiter
to dataclass by @chrisjsewell in #211 - ♻️ REFACTOR: Move
Token
todataclass
by @chrisjsewell in #212 - 📚 DOCS: Update usage guide to use PyPI package name by @thibaudcolas in #202
- 🐛 FIX: Combination of blockquotes, list and newlines causes IndexError by @hukkin in #207
- ♻️ REFACTOR: slots for dataclasses by @hukkin in #214
- 🚀 RELEASE: v2.1.0 by @chrisjsewell in #213
New Contributors
- @mib112 made their first contribution in #206
- @kianmeng made their first contribution in #203
- @thibaudcolas made their first contribution in #202
Full Changelog: v2.0.1...v2.1.0
v2.0.1
What's Changed
- 🐛 FIX: Crash when file ends with empty blockquote line by @hukkin in #186
- ✨ NEW: Add
inline_definitions
option by @chrisjsewell in #187
Full Changelog: v2.0.0...v2.0.1
v2.0.0
What's Changed
- ⬆️ Update: Sync with markdown-it v12.1.0 and CommonMark v0.30 by @hukkin in #168
- 📚 DOCS: Fix parameter-names and descriptions by @marcusatiliusregulus in #173
- 🧪 TESTS: Test against python3.10 by @hukkin in #178
- 🧪 TESTS: Add URL normalisation xfail by @hukkin in #170
- 🐛 FIX: Always suffix indented code block with newline by @hukkin in #169
- 👌 IMPROVE: Use all to signal re-exports by @hukkin in #120
- ♻️ REFACTOR: Port
mdurl
andpunycode
for URL normalisation by @hukkin in #171 - 🔧 MAINTAIN: Use
pyproject-build
for package deployment by @hukkin in #177 - 📚 DOCS:
punycode
andmdurl
are now used by @hukkin in #179 - 🧪 TESTS: Remove needless xfail by @hukkin in #180
- ♻️ REFACTOR: Remove
AttrDict
by @chrisjsewell in #181 - 🚀 RELEASE: v2.0.0 by @chrisjsewell in #182
New Contributors
- @marcusatiliusregulus made their first contribution in #173
Full Changelog: v1.1.0...v2.0.0
v1.1.0
See CHANGELOG.md
v1.0.0
The first stable release of markdown-it-py 🎉
See CHANGELOG.md
v1.0.0b3
See CHANGELOG.md
v1.0.0b2
See CHANGELOG.md