Skip to content

Releases: Python-Markdown/markdown

Release 3.7

16 Aug 17:12
Compare
Choose a tag to compare

Changed

Refactor abbr Extension

A new AbbrTreeprocessor has been introduced, which replaces the now deprecated
AbbrInlineProcessor. Abbreviation processing now happens after Attribute Lists,
avoiding a conflict between the two extensions (#1460).

The AbbrPreprocessor class has been renamed to AbbrBlockprocessor, which
better reflects what it is. AbbrPreprocessor has been deprecated.

A call to Markdown.reset() now clears all previously defined abbreviations.

Abbreviations are now sorted by length before executing AbbrTreeprocessor
to ensure that multi-word abbreviations are implemented even if an abbreviation
exists for one of those component words. (#1465)

Abbreviations without a definition are now ignored. This avoids applying
abbr tags to text without a title value.

Added an optional glossary configuration option to the abbreviations extension.
This provides a simple and efficient way to apply a dictionary of abbreviations
to every page.

Abbreviations can now be disabled by setting their definition to "" or ''.
This can be useful when using the glossary option.

Fixed

  • Fixed links to source code on GitHub from the documentation (#1453).

Release 3.6

14 Mar 18:35
e524b8f
Compare
Choose a tag to compare

Changed

Refactor TOC Sanitation

  • All postprocessors are now run on heading content.
  • Footnote references are now stripped from heading content. Fixes #660.
  • A more robust striptags is provided to convert headings to plain text.
    Unlike, the markupsafe implementation, HTML entities are not unescaped.
  • The plain text name, rich html, and unescaped raw data-toc-label are
    saved to toc_tokens, allowing users to access the full rich text content of
    the headings directly from toc_tokens.
  • The value of data-toc-label is sanitized separate from heading content
    before being written to name. This fixes a bug which allowed markup through
    in certain circumstances. To access the raw unsanitized data, retrieve the
    value from token['data-toc-label'] directly.
  • An html.unescape call is made just prior to calling slugify so that
    slugify only operates on Unicode characters. Note that html.unescape is
    not run on name, html, or data-toc-label.
  • The functions get_name and stashedHTML2text defined in the toc extension
    are both deprecated. Instead, third party extensions should use some
    combination of the new functions run_postprocessors, render_inner_html and
    striptags.

Fixed

  • Include scripts/*.py in the generated source tarballs (#1430).
  • Ensure lines after heading in loose list are properly detabbed (#1443).
  • Give smarty tree processor higher priority than toc (#1440).
  • Permit carets (^) and square brackets (]) but explicitly exclude
    backslashes (\) from abbreviations (#1444).
  • In attribute lists (attr_list, fenced_code), quoted attribute values are
    now allowed to contain curly braces (}) (#1414).

Release 3.5.2

10 Jan 15:19
Compare
Choose a tag to compare

Fixed

  • Fix type annotations for convertFile - it accepts only bytes-based buffers.
    Also remove legacy checks from Python 2 (#1400)
  • Remove legacy import needed only in Python 2 (#1403)
  • Fix typo that left the attribute AdmonitionProcessor.content_indent unset
    (#1404)
  • Fix edge-case crash in InlineProcessor with AtomicString (#1406).
  • Fix edge-case crash in codehilite with an empty code tag (#1405).
  • Improve and expand type annotations in the code base (#1401).
  • Fix handling of bogus comments (#1425).

Release 3.5.1

31 Oct 19:59
Compare
Choose a tag to compare

Fixed

  • Fix a performance problem with HTML extraction where large HTML input could
    trigger quadratic line counting behavior (#1392).
  • Improve and expand type annotations in the code base (#1394).