From ca17d8194ee0505ccef589db6d2df8aa26488a5c Mon Sep 17 00:00:00 2001 From: darrenburns Date: Mon, 29 May 2023 17:11:39 +0100 Subject: [PATCH] Add docs for Pretty, fix some reference issues in docs (#2678) --- docs/examples/widgets/pretty.py | 24 ++++++++++++++ docs/widget_gallery.md | 10 ++++++ docs/widgets/pretty.md | 44 ++++++++++++++++++++++++++ docs/widgets/static.md | 1 + mkdocs-nav.yml | 1 + src/textual/validation.py | 2 -- src/textual/widgets/_selection_list.py | 2 +- src/textual/widgets/_tabs.py | 2 +- src/textual/widgets/_tree.py | 2 +- 9 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 docs/examples/widgets/pretty.py create mode 100644 docs/widgets/pretty.md diff --git a/docs/examples/widgets/pretty.py b/docs/examples/widgets/pretty.py new file mode 100644 index 000000000..20630e85b --- /dev/null +++ b/docs/examples/widgets/pretty.py @@ -0,0 +1,24 @@ +from textual.app import App, ComposeResult +from textual.widgets import Pretty + +DATA = { + "title": "Back to the Future", + "releaseYear": 1985, + "director": "Robert Zemeckis", + "genre": "Adventure, Comedy, Sci-Fi", + "cast": [ + {"actor": "Michael J. Fox", "character": "Marty McFly"}, + {"actor": "Christopher Lloyd", "character": "Dr. Emmett Brown"}, + ], +} + + +class PrettyExample(App): + def compose(self) -> ComposeResult: + yield Pretty(DATA) + + +app = PrettyExample() + +if __name__ == "__main__": + app.run() diff --git a/docs/widget_gallery.md b/docs/widget_gallery.md index 15610ad96..3281e49e6 100644 --- a/docs/widget_gallery.md +++ b/docs/widget_gallery.md @@ -158,6 +158,16 @@ Display placeholder content while you are designing a UI. ```{.textual path="docs/examples/widgets/placeholder.py"} ``` +## Pretty + +Display a pretty-formatted Rich renderable. + +[Pretty reference](./widgets/pretty.md){ .md-button .md-button--primary } + + +```{.textual path="docs/examples/widgets/pretty.py"} +``` + ## ProgressBar A configurable progress bar with ETA and percentage complete. diff --git a/docs/widgets/pretty.md b/docs/widgets/pretty.md new file mode 100644 index 000000000..c91231b7b --- /dev/null +++ b/docs/widgets/pretty.md @@ -0,0 +1,44 @@ +# Pretty + +Display a pretty-formatted object. + +- [ ] Focusable +- [ ] Container + +## Example + +The example below shows a pretty-formatted `dict`, but `Pretty` can display any Python object. + +=== "Output" + + ```{.textual path="docs/examples/widgets/pretty.py"} + ``` + +=== "pretty.py" + + ```python + --8<-- "docs/examples/widgets/pretty.py" + ``` + +## Reactive Attributes + +This widget has no reactive attributes. + +## Messages + +This widget posts no messages. + +## Bindings + +This widget has no bindings. + +## Component Classes + +This widget has no component classes. + +--- + + +::: textual.widgets.Pretty + options: + heading_level: 2 diff --git a/docs/widgets/static.md b/docs/widgets/static.md index d8ab1bb99..561f05343 100644 --- a/docs/widgets/static.md +++ b/docs/widgets/static.md @@ -32,6 +32,7 @@ This widget sends no messages. ## See Also * [Label](./label.md) +* [Pretty](./pretty.md) --- diff --git a/mkdocs-nav.yml b/mkdocs-nav.yml index 3be215180..9fd4c8e99 100644 --- a/mkdocs-nav.yml +++ b/mkdocs-nav.yml @@ -146,6 +146,7 @@ nav: - "widgets/markdown.md" - "widgets/option_list.md" - "widgets/placeholder.md" + - "widgets/pretty.md" - "widgets/progress_bar.md" - "widgets/radiobutton.md" - "widgets/radioset.md" diff --git a/src/textual/validation.py b/src/textual/validation.py index f49cec941..58131dc84 100644 --- a/src/textual/validation.py +++ b/src/textual/validation.py @@ -193,8 +193,6 @@ class Validator(ABC): then the `describe_failure` method on `Validator` will be called. value: The value that was considered invalid. This is optional, and only needs to be supplied if required in your `Input.Changed` handler. - validator: The validator that performed the validation. This is optional, and only needs to be supplied if - required in your `Input.Changed` handler. failures: The reasons the validator failed. If not supplied, a generic `Failure` will be included in the ValidationResult returned from this function. diff --git a/src/textual/widgets/_selection_list.py b/src/textual/widgets/_selection_list.py index 5a6023ad1..825abe3bb 100644 --- a/src/textual/widgets/_selection_list.py +++ b/src/textual/widgets/_selection_list.py @@ -570,7 +570,7 @@ class SelectionList(Generic[SelectionType], OptionList): """Get the selection option with the given ID. Args: - index: The ID of the selection option to get. + option_id: The ID of the selection option to get. Returns: The selection option with the ID. diff --git a/src/textual/widgets/_tabs.py b/src/textual/widgets/_tabs.py index c59cbca16..3efab6d92 100644 --- a/src/textual/widgets/_tabs.py +++ b/src/textual/widgets/_tabs.py @@ -354,7 +354,7 @@ class Tabs(Widget, can_focus=True): """Remove a tab. Args: - tab_id: The Tab's id. + tab_or_id: The Tab's id. """ if tab_or_id is None: return diff --git a/src/textual/widgets/_tree.py b/src/textual/widgets/_tree.py index 8bb32bf96..ef1f25902 100644 --- a/src/textual/widgets/_tree.py +++ b/src/textual/widgets/_tree.py @@ -98,7 +98,7 @@ class TreeNode(Generic[TreeDataType]): id: The ID of the node. label: The label for the node. data: Optional data to associate with the node. - expand: Should the node be attached in an expanded state? + expanded: Should the node be attached in an expanded state? allow_expand: Should the node allow being expanded by the user? """ self._tree = tree