Skip to content

Releases: posit-dev/py-htmltools

htmltools 0.6.1

01 May 15:05

Choose a tag to compare

Bug fixes

  • HTMLDocument.save_html() now explicitly uses encoding="utf-8" when writing files, fixing UnicodeEncodeError on Windows when HTML contains non-ASCII characters (e.g., Unicode minus sign U+2212 from matplotlib SVG output). (#102)

Other changes

  • Dropped support for Python 3.9 (EOL). Added support for Python 3.13 and 3.14. (#104)

htmltools 0.6.0

29 Oct 20:18
@wch wch

Choose a tag to compare

Breaking changes

  • HTML no longer inherits from str. It now inherits from collections.UserString. This was done to avoid confusion between str and HTML objects. (#86)

  • TagList no longer inherits from list. It now inherits from collections.UserList. This was done to avoid confusion between list and TagList objects. (#97)

  • Tag and TagList's method .get_html_string() now both return str instead of HTML. (#86)

  • Strings added to HTML objects, now return HTML objects. E.g. HTML_value + str_value and str_value + HTML_value both return HTML objects. To maintain a str result, call str() on your HTML objects before adding them to other strings values. (#86)

  • Items added to TagList objects, now return TagList objects. E.g. TagList_value + arr_value and arr_value + TagList_value both return new TagList objects. To maintain a list result, call list() on your TagList objects before combining them to other list objects. (#97)

New features

  • Exported ReprHtml protocol class. If an object has a _repr_html_ method, then it is of instance ReprHtml. (#86)

  • Exported is_tag_node() and is_tag_child() functions that utilize typing.TypeIs to narrow TagNode and TagChild type variables, respectively. (#86)

  • Exported consolidate_attrs(*args, **kwargs) function. This function will combine the TagAttrs (supplied in *args) with TagAttrValues (supplied in **kwargs) into a single TagAttrs object. In addition, it will also return all *args that are not dictionary as a list of unaltered TagChild objects. (#86)

  • The Tag method .add_style(style=) added support for HTML objects in addition to str values. (#86)

Bug fixes

  • Fixed an issue with HTMLTextDocument() returning extracted HTMLDependency()s in a non-determistic order. (#95)

htmltools 0.5.3

18 Jul 15:24
@wch wch

Choose a tag to compare

  • HTML tags in docstrings are now escaped. (#90)

htmltools 0.5.2

23 May 15:29
@wch wch

Choose a tag to compare

  • The HTMLDependency.copy() method can now correctly copy folders in depenendencies that both include directories and have all_files=True. (#87)

htmltools 0.5.1

18 Dec 23:32
@wch wch

Choose a tag to compare

  • Tag objects can now be used as context managers, as in with tags.div():. When used this way, then inside the with block, sys.displayhook is replaced with a function which adds items as children to the Tag. This is meant to be used with Shiny Express, Quarto, or Jupyter. (#76)

  • Added a function wrap_displayhook_handler(). This alliows displayhooks to delegate their logic for handling various kinds of objects (like Tag objects and objects with a _repr_html()) to this function. (#77)

htmltools 0.5.0

07 Dec 21:55
@wch wch

Choose a tag to compare

  • Objects with a _repr_html_ method can now appear as children of Tag/TagList objects. (#74)

  • Changed the type annotation of _add_ws from bool to TagAttrValue. This makes it easier to write functions which call Tag functions and pass along **kwargs. (#67)

  • Changed the type annotation of collapse_ from str to str | float | None. This makes it easier to write calls to css() pass along **kwargs. (#68)

  • Enhanced the type definition of TagAttrs to include TagAttrDict, the type of a Tag's attrs property. (#55)

  • For HTMLTextDocument objects, deduplicate HTML dependencies. (#72)

  • Switched from setup.cfg and setup.py to pyproject.toml. (#73)

htmltools 0.4.1

30 Oct 23:44
@wch wch

Choose a tag to compare

  • Fixed deserialization of JSON HTML dependencies when they contained newline characters. (#65)

htmltools 0.4.0

30 Oct 20:39
0b3eee2

Choose a tag to compare

  • Added HTMLTextDocument class, which takes as input a string representation of an HTML document. (#61)

  • Added htmltools.html_dependency_render_mode. If this is set to "json", then HTMLDependency objects will be rendered as JSON inside of <script> tags. (#61)

htmltools 0.3.0

01 Aug 21:29
@wch wch

Choose a tag to compare

New features

  • Added Tag methods remove_class and add_style. (#57)

  • Added support for Tag's add_class(prepend=). (#57)

Other changes

  • Dropped support for Python 3.7 (#56)

htmltools 0.2.1

03 Apr 20:10
@wch wch

Choose a tag to compare

Bug fixes

  • Fixed the stype signature of the TagFunction protocol class.