From 731f4fc93ba784c6c972984bdfc1f5a07bfa05d9 Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Mon, 23 Jan 2023 10:50:24 +0000 Subject: [PATCH 1/4] Make Column and Row available for import via widgets.data_table See #1589. --- src/textual/widgets/data_table.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/textual/widgets/data_table.py diff --git a/src/textual/widgets/data_table.py b/src/textual/widgets/data_table.py new file mode 100644 index 0000000000..d0316f3872 --- /dev/null +++ b/src/textual/widgets/data_table.py @@ -0,0 +1,5 @@ +"""Make non-widget DataTable support classes available.""" + +from ._data_table import Column, Row + +__all__ = ["Column", "Row"] From d4c71588a7638e12a3f31bad751f1860fb4151a9 Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Mon, 23 Jan 2023 10:57:55 +0000 Subject: [PATCH 2/4] Make TreeNode available for import via widgets.tree See #1589. --- src/textual/widgets/tree.py | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/textual/widgets/tree.py diff --git a/src/textual/widgets/tree.py b/src/textual/widgets/tree.py new file mode 100644 index 0000000000..2e315bc23d --- /dev/null +++ b/src/textual/widgets/tree.py @@ -0,0 +1,5 @@ +"""Make non-widget Tree support classes available.""" + +from ._tree import TreeNode + +__all__ = ["TreeNode"] From 4adfe69ec90499a50a966ae655c05276f14a6acf Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Mon, 23 Jan 2023 17:37:58 +0000 Subject: [PATCH 3/4] Remove TreeNode as a pseudo-widget This encourages importing it from `textual.widgets.tree` instead, keeping it in line with the other changes made for #1637. Note this is a breaking change. --- examples/json_tree.py | 3 ++- src/textual/widgets/__init__.py | 2 -- src/textual/widgets/_tree_node.py | 1 - tests/tree/test_tree_node_children.py | 3 ++- tests/tree/test_tree_node_label.py | 3 ++- tests/tree/test_tree_node_parent.py | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 src/textual/widgets/_tree_node.py diff --git a/examples/json_tree.py b/examples/json_tree.py index 7380fcc25a..45cede3c54 100644 --- a/examples/json_tree.py +++ b/examples/json_tree.py @@ -4,7 +4,8 @@ from rich.text import Text from textual.app import App, ComposeResult -from textual.widgets import Header, Footer, Tree, TreeNode +from textual.widgets import Header, Footer, Tree +from textual.widgets.tree import TreeNode class TreeApp(App): diff --git a/src/textual/widgets/__init__.py b/src/textual/widgets/__init__.py index 4628cbe922..295b8bf122 100644 --- a/src/textual/widgets/__init__.py +++ b/src/textual/widgets/__init__.py @@ -23,7 +23,6 @@ from ._static import Static from ._text_log import TextLog from ._tree import Tree - from ._tree_node import TreeNode from ._welcome import Welcome from ..widget import Widget @@ -44,7 +43,6 @@ "Static", "TextLog", "Tree", - "TreeNode", "Welcome", ] diff --git a/src/textual/widgets/_tree_node.py b/src/textual/widgets/_tree_node.py deleted file mode 100644 index e6c57fb617..0000000000 --- a/src/textual/widgets/_tree_node.py +++ /dev/null @@ -1 +0,0 @@ -from ._tree import TreeNode as TreeNode diff --git a/tests/tree/test_tree_node_children.py b/tests/tree/test_tree_node_children.py index eb5c949c07..d6c5c7e4e6 100644 --- a/tests/tree/test_tree_node_children.py +++ b/tests/tree/test_tree_node_children.py @@ -1,5 +1,6 @@ import pytest -from textual.widgets import Tree, TreeNode +from textual.widgets import Tree +from textual.widgets.tree import TreeNode def label_of(node: TreeNode[None]): diff --git a/tests/tree/test_tree_node_label.py b/tests/tree/test_tree_node_label.py index e64fcf24d9..7d7a043291 100644 --- a/tests/tree/test_tree_node_label.py +++ b/tests/tree/test_tree_node_label.py @@ -1,4 +1,5 @@ -from textual.widgets import Tree, TreeNode +from textual.widgets import Tree +from textual.widgets.tree import TreeNode from rich.text import Text diff --git a/tests/tree/test_tree_node_parent.py b/tests/tree/test_tree_node_parent.py index b9d85af432..87e66ebc4b 100644 --- a/tests/tree/test_tree_node_parent.py +++ b/tests/tree/test_tree_node_parent.py @@ -1,4 +1,4 @@ -from textual.widgets import TreeNode, Tree +from textual.widgets import Tree def test_tree_node_parent() -> None: From 289135a1c9400259f3316d70c92d5c2d10cc4a3d Mon Sep 17 00:00:00 2001 From: Dave Pearson Date: Mon, 23 Jan 2023 17:42:08 +0000 Subject: [PATCH 4/4] Update the CHANGELOG This aims to make it clear that a small but significant breaking change has taken place. See #1637. --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3ffc3dbea..74196cae65 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [0.11.0] - Unreleased + +### Changed + +- Breaking change: `TreeNode` can no longer be imported from `textual.widgets`; it is now available via `from textual.widgets.tree import TreeNode`. https://github.com/Textualize/textual/pull/1637 + ## [0.10.1] - 2023-01-20 ### Added