From f73de3e699626fd7ef42a348bd7ab8f911a5b698 Mon Sep 17 00:00:00 2001 From: Ivan Habunek Date: Mon, 25 Aug 2025 08:28:17 +0200 Subject: [PATCH] Fix how urwidgets are vendeored Should be done inside `toot` so that it doesn't clash when people have toot installed alongside python-urwidgets. --- pyproject.toml | 2 +- tests/tui/test_rich_text.py | 2 +- toot/tui/richtext/__init__.py | 22 +++++---------------- toot/tui/richtext/richtext.py | 2 +- {urwidgets => toot/urwidgets}/README.md | 0 {urwidgets => toot/urwidgets}/__init__.py | 0 {urwidgets => toot/urwidgets}/hyperlink.py | 0 {urwidgets => toot/urwidgets}/text_embed.py | 0 8 files changed, 8 insertions(+), 20 deletions(-) rename {urwidgets => toot/urwidgets}/README.md (100%) rename {urwidgets => toot/urwidgets}/__init__.py (100%) rename {urwidgets => toot/urwidgets}/hyperlink.py (100%) rename {urwidgets => toot/urwidgets}/text_embed.py (100%) diff --git a/pyproject.toml b/pyproject.toml index c184ed5..b65dec8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,8 +48,8 @@ packages=[ "toot.cli", "toot.tui", "toot.tui.richtext", + "toot.urwidgets", "toot.utils", - "urwidgets", ] [tool.setuptools_scm] diff --git a/tests/tui/test_rich_text.py b/tests/tui/test_rich_text.py index bf04d4b..79b5545 100644 --- a/tests/tui/test_rich_text.py +++ b/tests/tui/test_rich_text.py @@ -1,6 +1,6 @@ from urwid import Divider, Filler, Pile from toot.tui.richtext import url_to_widget -from urwidgets import Hyperlink, TextEmbed +from toot.urwidgets import Hyperlink, TextEmbed from toot.tui.richtext.richtext import html_to_widgets diff --git a/toot/tui/richtext/__init__.py b/toot/tui/richtext/__init__.py index 07e31c8..c3be17e 100644 --- a/toot/tui/richtext/__init__.py +++ b/toot/tui/richtext/__init__.py @@ -1,18 +1,6 @@ -import urwid +from .richtext import html_to_widgets, url_to_widget -from toot.tui.utils import highlight_hashtags -from toot.utils import format_content -from typing import List - -try: - from .richtext import html_to_widgets, url_to_widget -except ImportError: - # Fallback if urwidgets are not available - def html_to_widgets(html: str) -> List[urwid.Widget]: - return [ - urwid.Text(highlight_hashtags(line)) - for line in format_content(html) - ] - - def url_to_widget(url: str): - return urwid.Text(("link", url)) +__all__ = ( + "html_to_widgets", + "url_to_widget", +) diff --git a/toot/tui/richtext/richtext.py b/toot/tui/richtext/richtext.py index e5ae44a..9165d3d 100644 --- a/toot/tui/richtext/richtext.py +++ b/toot/tui/richtext/richtext.py @@ -4,10 +4,10 @@ import unicodedata from bs4.element import NavigableString, Tag from toot.tui.constants import PALETTE +from toot.urwidgets import Hyperlink, TextEmbed from toot.utils import parse_html, urlencode_url from typing import List, Tuple from urwid.util import decompose_tagmarkup -from urwidgets import Hyperlink, TextEmbed STYLE_NAMES = [p[0] for p in PALETTE] diff --git a/urwidgets/README.md b/toot/urwidgets/README.md similarity index 100% rename from urwidgets/README.md rename to toot/urwidgets/README.md diff --git a/urwidgets/__init__.py b/toot/urwidgets/__init__.py similarity index 100% rename from urwidgets/__init__.py rename to toot/urwidgets/__init__.py diff --git a/urwidgets/hyperlink.py b/toot/urwidgets/hyperlink.py similarity index 100% rename from urwidgets/hyperlink.py rename to toot/urwidgets/hyperlink.py diff --git a/urwidgets/text_embed.py b/toot/urwidgets/text_embed.py similarity index 100% rename from urwidgets/text_embed.py rename to toot/urwidgets/text_embed.py