Python-Markdown 3.4 Release Notes¶
Python-Markdown version 3.4 supports Python versions 3.7, 3.8, 3.9, 3.10 and PyPy3.
Backwards-incompatible changes¶
The tables
extension now uses a style
attribute instead of an align
attribute for alignment.¶
The HTML4 spec specifically deprecates the use of the align
attribute
and it does not appear at all in the HTML5 spec. Therefore, by default,
the tables extension will now use the style
attribute (setting just the
text-align
property) in td
and th
blocks.
The former behavior is available by setting the use_align_attribute
configuration option to True
when enabling the extension.
For example, to configure the old align
behavior:
from markdown.extensions.tables import TableExtension
markdown.markdown(src, extensions=[TableExtension(use_align_attribute=True)])
Backslash unescaping moved to Treeprocessor (#1131).¶
Unescaping backslash escapes has been moved to a Treeprocessor, which enables
proper HTML escaping during serialization. However, it is recognized that
various third-party extensions may be calling the old class at
postprocessors.UnescapePostprocessor
. Therefore, the old class remains in the
code base, but has been deprecated and will be removed in a future release. The
new class treeprocessors.UnescapeTreeprocessor
should be used instead.
Previously deprecated objects have been removed¶
Various objects were deprecated in version 3.0 and began raising deprecation warnings (see the version 3.0 release notes for details). Any of those objects which remained in version 3.3 have been removed from the code base in version 3.4 and will now raise errors. The relevant objects are listed below.
Deprecated Object | Replacement Object |
---|---|
markdown.version |
markdown.__version__ |
markdown.version_info |
markdown.__version_info__ |
markdown.util.etree |
xml.etree.ElementTree |
markdown.util.string_type |
str |
markdown.util.text_type |
str |
markdown.util.int2str |
chr |
markdown.util.iterrange |
range |
markdown.util.isBlockLevel |
markdown.Markdown().is_block_level |
markdown.util.Processor().markdown |
markdown.util.Processor().md |
markdown.util.Registry().__setitem__ |
markdown.util.Registry().register |
markdown.util.Registry().__delitem__ |
markdown.util.Registry().deregister |
markdown.util.Registry().add |
markdown.util.Registry().register |
In addition, the md_globals
parameter of
Markdown.extensions.Extension.extendMarkdown()
is no longer recognized as a
valid parameter and will raise an error if provided.
New features¶
The following new features have been included in the 3.4 release:
-
Some new configuration options have been added to the footnotes extension (#1218):
-
Small refactor of the
BACKLINK_TITLE
option; The use offormat()
instead of “old”%d
formatter allows one to specify text without the need to have the number of the footnote in it (like footnotes on Wikipedia for example). The modification is backward compatible so no configuration change is required. -
Addition of a new option
SUPERSCRIPT_TEXT
that allows one to specify a custom placeholder for the footnote itself in the text. Ex:[{}]
will give<sup>[1]</sup>
,({})
will give<sup>(1)</sup>
, or by default, the current behavior:<sup>1</sup>
.
-
-
The Table of Contents extension now accepts a
toc_class
parameter which can be used to set the CSS class(es) on the<div>
that contains the Table of Contents (#1224). -
The CodeHilite extension now supports a
pygments_formatter
option that can be set to a custom formatter class (#1187).- If
pygments_formatter
is set to a string (ex:'html'
), Pygments’ default formatter by that name is used. - If
pygments_formatter
is set to a formatter class (or any callable which returns a formatter instance), then an instance of that class is used.
The formatter class is now passed an additional option,
lang_str
, to denote the language of the code block (#1258). While Pygments’ built-in formatters will ignore the option, a custom formatter assigned to thepygments_formatter
option can make use of thelang_str
to include the code block’s language in the output. - If
Bug fixes¶
The following bug fixes are included in the 3.4 release:
- Extension entry-points are only loaded if needed (#1216).
- Added additional checks to the
<pre><code>
handling ofPrettifyTreeprocessor
(#1261, #1263).