Skip to content

Commit bee6d19

Browse files
authored
🚀 RELEASE: v3.0.0 (#286)
1 parent e146728 commit bee6d19

File tree

4 files changed

+81
-1
lines changed

4 files changed

+81
-1
lines changed

CHANGELOG.md

+78
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,83 @@
11
# Change Log
22

3+
## 3.0.0 - 2023-06-03
4+
5+
⚠️ This release contains some minor breaking changes in the internal API and improvements to the parsing strictness.
6+
7+
**Full Changelog**: <https://github.com/executablebooks/markdown-it-py/compare/v2.2.0...v3.0.0>
8+
9+
### ⬆️ UPGRADE: Drop support for Python 3.7
10+
11+
Also add testing for Python 3.11
12+
13+
### ⬆️ UPGRADE: Update from upstream markdown-it `12.2.0` to `13.0.0`
14+
15+
A key change is the addition of a new `Token` type, `text_special`, which is used to represent HTML entities and backslash escaped characters.
16+
This ensures that (core) typographic transformation rules are not incorrectly applied to these texts.
17+
The final core rule is now the new `text_join` rule, which joins adjacent `text`/`text_special` tokens,
18+
and so no `text_special` tokens should be present in the final token stream.
19+
Any custom typographic rules should be inserted before `text_join`.
20+
21+
A new `linkify` rule has also been added to the inline chain, which will linkify full URLs (e.g. `https://example.com`),
22+
and fixes collision of emphasis and linkifier (so `http://example.org/foo._bar_-_baz` is now a single link, not emphasized).
23+
Emails and fuzzy links are not affected by this.
24+
25+
* ♻️ Refactor backslash escape logic, add `text_special` [#276](https://github.com/executablebooks/markdown-it-py/pull/276)
26+
* ♻️ Parse entities to `text_special` token [#280](https://github.com/executablebooks/markdown-it-py/pull/280)
27+
* ♻️ Refactor: Add linkifier rule to inline chain for full links [#279](https://github.com/executablebooks/markdown-it-py/pull/279)
28+
* ‼️ Remove `(p)` => `§` replacement in typographer [#281](https://github.com/executablebooks/markdown-it-py/pull/281)
29+
* ‼️ Remove unused `silent` arg in `ParserBlock.tokenize` [#284](https://github.com/executablebooks/markdown-it-py/pull/284)
30+
* 🐛 FIX: numeric character reference passing [#272](https://github.com/executablebooks/markdown-it-py/pull/272)
31+
* 🐛 Fix: tab preventing paragraph continuation in lists [#274](https://github.com/executablebooks/markdown-it-py/pull/274)
32+
* 👌 Improve nested emphasis parsing [#273](https://github.com/executablebooks/markdown-it-py/pull/273)
33+
* 👌 fix possible ReDOS in newline rule [#275](https://github.com/executablebooks/markdown-it-py/pull/275)
34+
* 👌 Improve performance of `skipSpaces`/`skipChars` [#271](https://github.com/executablebooks/markdown-it-py/pull/271)
35+
* 👌 Show text of `text_special` in `tree.pretty` [#282](https://github.com/executablebooks/markdown-it-py/pull/282)
36+
37+
### ♻️ REFACTOR: Replace most character code use with strings
38+
39+
The use of `StateBase.srcCharCode` is deprecated (with backward-compatibility), and all core uses are replaced by `StateBase.src`.
40+
41+
Conversion of source string characters to an integer representing the Unicode character is prevalent in the upstream JavaScript implementation, to improve performance.
42+
However, it is unnecessary in Python and leads to harder to read code and performance deprecations (during the conversion in the `StateBase` initialisation).
43+
44+
See [#270](https://github.com/executablebooks/markdown-it-py/pull/270), thanks to [@hukkinj1](https://github.com/hukkinj1).
45+
46+
### ♻️ Centralise indented code block tests
47+
48+
For CommonMark, the presence of indented code blocks prevent any other block element from having an indent of greater than 4 spaces.
49+
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.
50+
Previously, disabling code blocks did not remove the indent limitation, since most block elements had the 3 space limitation hard-coded.
51+
This change centralised the logic of applying this limitation (in `StateBlock.is_code_block`), and only applies it when indented code blocks are enabled.
52+
53+
This allows for e.g.
54+
55+
```md
56+
<div>
57+
<div>
58+
59+
I can indent as much as I want here.
60+
61+
<div>
62+
<div>
63+
```
64+
65+
See [#260](https://github.com/executablebooks/markdown-it-py/pull/260)
66+
67+
### 🔧 Maintenance changes
68+
69+
Strict type annotation checking has been applied to the whole code base,
70+
[ruff](https://github.com/charliermarsh/ruff) is now used for linting,
71+
and fuzzing tests have been added to the CI, to integrate with Google [OSS-Fuzz](https://github.com/google/oss-fuzz/tree/master/projects/markdown-it-py) testing, thanks to [@DavidKorczynski](https://github.com/DavidKorczynski).
72+
73+
* 🔧 MAINTAIN: Make type checking strict [#](https://github.com/executablebooks/markdown-it-py/pull/267)
74+
* 🔧 Add typing of rule functions [#283](https://github.com/executablebooks/markdown-it-py/pull/283)
75+
* 🔧 Move linting from flake8 to ruff [#268](https://github.com/executablebooks/markdown-it-py/pull/268)
76+
* 🧪 CI: Add fuzzing workflow for PRs [#262](https://github.com/executablebooks/markdown-it-py/pull/262)
77+
* 🔧 Add tox env for fuzz testcase run [#263](https://github.com/executablebooks/markdown-it-py/pull/263)
78+
* 🧪 Add OSS-Fuzz set up by @DavidKorczynski in [#255](https://github.com/executablebooks/markdown-it-py/pull/255)
79+
* 🧪 Fix fuzzing test failures [#254](https://github.com/executablebooks/markdown-it-py/pull/254)
80+
381
## 2.2.0 - 2023-02-22
482

583
### What's Changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
- Pluggable: Adds syntax extensions to extend the parser (see the [plugin list][md-plugins]).
1515
- High speed (see our [benchmarking tests][md-performance])
1616
- [Safe by default][md-security]
17+
- Member of [Google's Assured Open Source Software](https://cloud.google.com/assured-open-source-software/docs/supported-packages)
1718

1819
This is a Python port of [markdown-it], and some of its associated plugins.
1920
For more details see: <https://markdown-it-py.readthedocs.io>.

docs/index.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- {fa}`check,text-success mr-1` Pluggable: Adds syntax extensions to extend the parser (see the [plugin list](md/plugins))
88
- {fa}`check,text-success mr-1` High speed (see our [benchmarking tests](md/performance))
99
- {fa}`check,text-success mr-1` [Safe by default](md/security)
10+
- {fa}`check,text-success mr-1` Member of [Google's Assured Open Source Software](https://cloud.google.com/assured-open-source-software/docs/supported-packages)
1011

1112
For a good introduction to [markdown-it] see the __[Live demo](https://markdown-it.github.io)__.
1213
This is a Python port of the well used [markdown-it], and some of its associated plugins.

markdown_it/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
"""A Python port of Markdown-It"""
22
__all__ = ("MarkdownIt",)
3-
__version__ = "2.2.0"
3+
__version__ = "3.0.0"
44

55
from .main import MarkdownIt

0 commit comments

Comments
 (0)