Repository Analysis

Textualize/textual

The lean application framework for Python. Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and a web browser.

18.4 Moderate AI signal View on GitHub
18.4
Adjusted Score
18.4
Raw Score
100%
Time Factor
2026-05-27
Last Push
36,086
Stars
Python
Language
175,027
Lines of Code
1331
Files
2240
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 259MEDIUM 6LOW 1975

Pattern Findings

2240 matches across 12 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers1272 hits · 1250 pts
SeverityFileLineSnippet
LOWtests/test_collapsible.py26async def test_compose_default_collapsible():
LOWtests/test_collapsible.py39async def test_compose_empty_collapsible():
LOWtests/test_collapsible.py51async def test_compose_nested_collapsible():
LOWtests/test_collapsible.py66async def test_compose_expanded_collapsible():
LOWtests/test_collapsible.py79async def test_collapsible_collapsed_contents_display_false():
LOWtests/test_collapsible.py91async def test_collapsible_expanded_contents_display_true():
LOWtests/test_collapsible.py172async def test_expand_via_watcher_message():
LOWtests/test_collapsible.py216async def test_collapse_via_watcher_message():
LOWtests/test_collapsible.py238async def test_collapsible_title_reactive_change():
LOWtests/test_tabs.py36async def test_compose_tabs_from_strings():
LOWtests/test_tabs.py50async def test_compose_tabs_from_tabs():
LOWtests/test_tabs.py115async def test_add_tab_before_badly():
LOWtests/test_tabs.py194async def test_add_tab_before_and_after():
LOWtests/test_tabs.py250async def test_remove_tabs_reversed():
LOWtests/test_tabs.py300async def test_change_active_from_code():
LOWtests/test_tabs.py323async def test_navigate_tabs_with_keyboard():
LOWtests/test_tabs.py353async def test_navigate_empty_tabs_with_keyboard():
LOWtests/test_tabs.py375async def test_navigate_tabs_with_mouse():
LOWtests/test_tabs.py426async def test_change_tab_with_code_messages():
LOWtests/test_tabs.py437async def test_remove_tabs_messages():
LOWtests/test_tabs.py454async def test_reverse_remove_tabs_messages():
LOWtests/test_tabs.py468async def test_keyboard_navigation_messages():
LOWtests/test_tabs.py482async def test_mouse_navigation_messages():
LOWtests/test_tabs.py496async def test_disabled_tab_is_not_activated_by_clicking_underline():
LOWtests/test_resolve.py64async def test_resolve_fraction_unit():
LOWtests/test_resolve.py127async def test_resolve_fraction_unit_stress_test():
LOWtests/test_screen_modes.py146async def test_screen_stack_preserved(ModesApp: Type[App]):
LOWtests/test_screen_modes.py171async def test_multiple_mode_callbacks():
LOWtests/test_data_table.py251async def test_add_row_duplicate_key():
LOWtests/test_data_table.py261async def test_add_row_too_many_values():
LOWtests/test_data_table.py271async def test_add_column_duplicate_key():
LOWtests/test_data_table.py280async def test_add_column_with_width():
LOWtests/test_data_table.py445async def test_get_cell_returns_value_at_cell():
LOWtests/test_data_table.py454async def test_get_cell_invalid_row_key():
LOWtests/test_data_table.py464async def test_get_cell_invalid_column_key():
LOWtests/test_data_table.py474async def test_get_cell_coordinate_returns_coordinate():
LOWtests/test_data_table.py686async def test_update_cell_cell_exists():
LOWtests/test_data_table.py696async def test_update_cell_cell_doesnt_exist():
LOWtests/test_data_table.py706async def test_update_cell_invalid_column_key():
LOWtests/test_data_table.py67async def test_datatable_message_emission():
LOWtests/test_data_table.py172async def test_empty_table_interactions():
LOWtests/test_data_table.py182async def test_cursor_movement_with_home_pagedown_etc(show_header):
LOWtests/test_data_table.py221async def test_add_rows_user_defined_keys():
LOWtests/test_data_table.py303async def test_add_columns_with_tuples():
LOWtests/test_data_table.py322async def test_add_columns_user_defined_keys():
LOWtests/test_data_table.py344async def test_remove_row_and_update():
LOWtests/test_data_table.py371async def test_remove_column_and_update():
LOWtests/test_data_table.py426async def test_initial_column_widths() -> None:
LOWtests/test_data_table.py492async def test_get_cell_coordinate_invalid_row_key():
LOWtests/test_data_table.py503async def test_get_cell_coordinate_invalid_column_key():
LOWtests/test_data_table.py514async def test_get_cell_at_returns_value_at_cell():
LOWtests/test_data_table.py523async def test_get_cell_at_exception():
LOWtests/test_data_table.py549async def test_get_row_invalid_row_key():
LOWtests/test_data_table.py576async def test_get_row_at_invalid_index(index):
LOWtests/test_data_table.py587async def test_get_row_index_returns_index():
LOWtests/test_data_table.py602async def test_get_row_index_invalid_row_key():
LOWtests/test_data_table.py627async def test_get_column_invalid_key():
LOWtests/test_data_table.py650async def test_get_column_at_invalid_index(index):
LOWtests/test_data_table.py658async def test_get_column_index_returns_index():
LOWtests/test_data_table.py673async def test_get_column_index_invalid_column_key():
1212 more matches not shown…
Cross-File Repetition136 hits · 680 pts
SeverityFileLineSnippet
HIGHtests/test_collapsible.py0test default settings of collapsible with 1 widget in contents.
HIGHtests/test_collapsible.py0test default settings of collapsible with 1 widget in contents.
HIGHtests/test_collapsible.py0test default settings of collapsible with 1 widget in contents.
HIGHtests/test_modal.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/snapshot_tests/test_snapshots.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/snapshot_tests/test_snapshots.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/snapshot_tests/snapshot_apps/log_write_lines.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/snapshot_tests/snapshot_apps/text_selection.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/screens/modal03.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/screens/modal02.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/screens/modal01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/border_title.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/border01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/dimensions04.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/dimensions01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/outline01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/padding02.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/dimensions02.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/margin01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/padding01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/dimensions03.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/guide/styles/box_sizing01.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbar_size.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbars2.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbar_gutter.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbar_corner_color.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/overflow.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/margin.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/outline_vs_border.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/text_style.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/outline.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbars.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbar_visibility.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/padding.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/text_style_all.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/styles/scrollbar_size2.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHdocs/examples/widgets/log.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHexamples/sidebar.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHsrc/textual/demo/widgets.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/test_widget_child_moving.py0regression test for https://github.com/textualize/textual/issues/1743
HIGHtests/test_widget_child_moving.py0regression test for https://github.com/textualize/textual/issues/1743
HIGHtests/test_widget_child_moving.py0regression test for https://github.com/textualize/textual/issues/1743
HIGHtests/test_widget_child_moving.py0regression test for https://github.com/textualize/textual/issues/1743
HIGHtests/test_screens.py0setting app.auto_focus = `none` means it is not taken into consideration.
HIGHtests/test_screens.py0setting app.auto_focus = `none` means it is not taken into consideration.
HIGHtests/test_screens.py0setting app.auto_focus = `none` means it is not taken into consideration.
HIGHtests/test_xterm_parser.py0scrolling the mouse with and without modifiers held down. we don't currently capture modifier keys in scroll events.
HIGHtests/test_xterm_parser.py0scrolling the mouse with and without modifiers held down. we don't currently capture modifier keys in scroll events.
HIGHtests/test_xterm_parser.py0scrolling the mouse with and without modifiers held down. we don't currently capture modifier keys in scroll events.
HIGHtests/snapshot_tests/test_snapshots.py0\ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name)
HIGHtests/snapshot_tests/test_snapshots.py0\ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name)
HIGHtests/snapshot_tests/test_snapshots.py0\ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name)
HIGHdocs/examples/widgets/text_area_selection.py0\ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name)
HIGHdocs/examples/widgets/text_area_example.py0\ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name)
HIGHtests/snapshot_tests/test_snapshots.py0screen { align: center middle; } #code-container { width: 20; height: 10; }
HIGHtests/snapshot_tests/test_snapshots.py0screen { align: center middle; } #code-container { width: 20; height: 10; }
HIGHtests/snapshot_tests/test_snapshots.py0screen { align: center middle; } #code-container { width: 20; height: 10; }
HIGHtests/snapshot_tests/test_snapshots.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/text_area/test_selection_bindings.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
HIGHtests/text_area/test_edit_via_bindings.py0i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear.
76 more matches not shown…
Docstring Block Structure117 hits · 585 pts
SeverityFileLineSnippet
HIGHsrc/textual/screen.py634Get the widget at a given coordinate. Args: x: X Coordinate. y: Y Coordinate.
HIGHsrc/textual/screen.py649Get the widget, and its region directly under the mouse, and the first widget, region pair with a hover style.
HIGHsrc/textual/screen.py741Get the screen region of a Widget. Args: widget: A Widget within the composition. Returns:
HIGHsrc/textual/_path.py22Normalize the supplied CSSPathType into a list of paths. Args: css_path: Value to be normalized. Raise
HIGHsrc/textual/pilot.py109Simulate a [`MouseDown`][textual.events.MouseDown] event at a specified position. The final position for the ev
HIGHsrc/textual/pilot.py155Simulate a [`MouseUp`][textual.events.MouseUp] event at a specified position. The final position for the event
HIGHsrc/textual/pilot.py202Simulate clicking with the mouse at a specified position. The final position to be clicked is computed based on
HIGHsrc/textual/pilot.py260Simulate double clicking with the mouse at a specified position. Alias for `pilot.click(..., times=2)`.
HIGHsrc/textual/pilot.py309Simulate triple clicking with the mouse at a specified position. Alias for `pilot.click(..., times=3)`.
HIGHsrc/textual/pilot.py354Simulate hovering with the mouse cursor at a specified position. The final position to be hovered is computed b
HIGHsrc/textual/pilot.py394Simulate a series of mouse events to be fired at a given position. The final position for the events is compute
HIGHsrc/textual/pilot.py474Wait for the current screen and its children to have processed all pending events. Args: timeout: A
HIGHsrc/textual/_import_app.py36Import an app from a path or import name. Args: import_name: A name to import, such as `foo.bar`, or a path
HIGHsrc/textual/color.py515Parse a string containing a named color or CSS-style color. Colors may be parsed from the following formats:
HIGHsrc/textual/widget.py697Get a common ancestors to both widgets. Raises: ValueError: If there is no common ancestor and `def
HIGHsrc/textual/widget.py1094Return the first child (immediate descendent) of this node with the given ID. Args: id: The ID of t
HIGHsrc/textual/widget.py1131Return the first descendant widget with the given ID. Performs a depth-first search rooted at this widget.
HIGHsrc/textual/widget.py1155Get the first immediate child of a given type. Only returns exact matches, and so will not match subclasses of
HIGHsrc/textual/widget.py1178Get a *Rich* style for a component. Args: names: Names of components. partial: Return a
HIGHsrc/textual/widget.py1376Attempt to locate the point where the caller wants to mount something. Args: spot: The spot to find
HIGHsrc/textual/widget.py1430Mount widgets below this widget (making this widget a container). Args: *widgets: The widget(s) to
HIGHsrc/textual/widget.py1520Mount widgets from an iterable. Args: widgets: An iterable of widgets. before: Optional
HIGHsrc/textual/widget.py1553Mount widgets from the result of a compose method. Example: ```python def on_key(self, even
HIGHsrc/textual/_binary_encode.py149Recursively encode data. Args: datum: Data suitable for encoding. Raises: Type
HIGHsrc/textual/_binary_encode.py170Load an encoded data structure from bytes. Args: encoded: Encoded data in bytes. Raises: Decod
HIGHsrc/textual/_binary_encode.py211Get a number of bytes of encode data. Args: size: Number of bytes to retrieve. Raises:
HIGHsrc/textual/_immutable_sequence_view.py53Return the index of the given item. Args: item: The item to find in the sequence. start
HIGHsrc/textual/_duration.py19 Args: duration: A string of the form `"2s"` or `"300ms"`, representing 2 seconds and 300 millis
HIGHsrc/textual/actions.py27Parses an action string. Args: action: String containing action. Raises: ActionError: If the a
HIGHsrc/textual/markup.py298Convert markup to Content. Args: markup: String containing markup. style: Optional base style.
HIGHsrc/textual/markup.py328Internal function to convert markup to Content. Args: markup: String containing markup. style: Opti
HIGHsrc/textual/_parser.py66Feed data to be parsed. Args: data: Data to parser. Raises: ParseError: If the
HIGHsrc/textual/_compositor.py830Get the widget under a given coordinate. Args: x: X Coordinate. y: Y Coordinate.
HIGHsrc/textual/_compositor.py974Get information regarding the relative position of a widget in the Compositor. Args: widget: The Wi
HIGHsrc/textual/_event_broker.py18Extract action from meta dict. Args: event_name: Event to check from. meta: Meta information (store
HIGHsrc/textual/content.py237Construct content from Text or str. If the argument is already Content, then return it unmodified. This
HIGHsrc/textual/_segment_tools.py38Given a character index, return the cell position of that character within an Iterable of Segments. This is the sum
HIGHsrc/textual/geometry.py1219Unpack padding specified in CSS style. Args: pad: An integer, or tuple of 1, 2, or 4 integers.
HIGHsrc/textual/app.py1251Get the screen stack for the given mode, or the current mode if no mode is specified. Args: mode: N
HIGHsrc/textual/app.py1794Run a callable from another thread, and return the result. Like asyncio apps in general, Textual apps are not t
HIGHsrc/textual/app.py2433Get the first child (immediate descendant) of this DOMNode with the given ID. Args: id: The ID of t
HIGHsrc/textual/app.py2466Get the first descendant widget with the given ID. Performs a breadth-first search rooted at the current screen
HIGHsrc/textual/app.py2491Get a child of a give type. Args: expect_type: The type of the expected child. Raises:
HIGHsrc/textual/app.py2531Mount the given widgets relative to the app's screen. Args: *widgets: The widget(s) to mount.
HIGHsrc/textual/app.py2561Mount widgets from an iterable. Args: widgets: An iterable of widgets. before: Optional
HIGHsrc/textual/app.py2631Switch to a given mode. Args: mode: The mode to switch to. Returns: An optiona
HIGHsrc/textual/app.py2764Get an installed screen. Example: ```python my_screen = self.get_screen("settings", MyS
HIGHsrc/textual/app.py2798Get an installed screen and an AwaitMount object. If the screen isn't running, it will be registered before it
HIGHsrc/textual/app.py2903Push a new [screen](/guide/screens) on the screen stack, making it the current screen. Args: screen
HIGHsrc/textual/app.py3037Install a screen. Installing a screen prevents Textual from destroying it when it is no longer on the screen st
HIGHsrc/textual/app.py4173Parse an action. Args: action: An action string. default_namespace: Namespace to user w
HIGHsrc/textual/visual.py76Get a visual instance from an object. If the object does not support the Visual protocol and is a Rich renderable,
HIGHsrc/textual/binding.py379Get a list of bindings for a given key. Args: key: Key to look up. Raises: NoB
HIGHsrc/textual/_dispatch_key.py13Dispatch a key event to method. This function will call the method named 'key_<event.key>' on a node if it exists.
HIGHsrc/textual/dom.py602Get a "component" styles object (must be defined in COMPONENT_CLASSES classvar). Args: names: Names
HIGHsrc/textual/dom.py1467Get a widget from this widget's children that matches a selector or widget type. Args: selector: A
HIGHsrc/textual/dom.py1553Get a widget from this widget's children that matches a selector or widget type, or `None` if there is no match.
HIGHsrc/textual/dom.py1590Get a widget from this widget's children that matches a selector or widget type. !!! Note This meth
HIGHsrc/textual/dom.py1670Get an ancestor which matches a query. Args: selector: A TCSS selector. expect_type: Ex
HIGHsrc/textual/dom.py1910Check whether an action is enabled. Implement this method to add logic for [dynamic actions](/guide/actions#dyn
57 more matches not shown…
Unused Imports456 hits · 435 pts
SeverityFileLineSnippet
LOWtools/widget_documentation.py7
LOWtests/test_command.py1
LOWtests/test_collapsible.py1
LOWtests/test_tabs.py1
LOWtests/test_data_table.py1
LOWtests/test_layout_resolve.py1
LOWtests/test_unmount.py1
LOWtests/test_features.py1
LOWtests/test_validation.py1
LOWtests/test_box_model.py1
LOWtests/test_reactive.py1
LOWtests/test_modal.py1
LOWtests/test_actions.py1
LOWtests/test_styles_cache.py1
LOWtests/test_widget_navigation.py1
LOWtests/test_on.py1
LOWtests/test_widget_child_moving.py1
LOWtests/test_content_switcher.py1
LOWtests/test_binding_inheritance.py12
LOWtests/test_widget.py629
LOWtests/test_content.py1
LOWtests/test_dynamic_bindings.py1
LOWtests/test_tabbed_content.py1
LOWtests/test_path.py1
LOWtests/test_animator.py1
LOWtests/test_screens.py1
LOWtests/test_markdown.py3
LOWtests/test_cache.py1
LOWtests/test_cache.py1
LOWtests/test_keymap.py1
LOWtests/test_markup.py1
LOWtests/tree/test_tree_cursor.py1
LOWtests/tree/test_tree_messages.py1
LOWtests/tree/test_tree_availability.py1
LOWtests/tree/test_tree_clearing.py1
LOWtests/tree/test_directory_tree.py1
LOWtests/tree/test_tree_expand_etc.py1
LOWtests/snapshot_tests/test_snapshots.py1
LOWtests/snapshot_tests/test_snapshots.py13
LOWtests/snapshot_tests/snapshot_apps/scroll_page.py1
LOWtests/snapshot_tests/snapshot_apps/recompose.py1
LOW…/snapshot_tests/snapshot_apps/directory_tree_reload.py3
LOW…_tests/snapshot_apps/pretty_grid_gutter_interaction.py3
LOW…apshot_tests/snapshot_apps/auto_grid_default_height.py1
LOWtests/snapshot_tests/snapshot_apps/dynamic_bindings.py1
LOWtests/snapshot_tests/snapshot_apps/mount_style_fix.py1
LOW…t_tests/snapshot_apps/option_list_multiline_options.py1
LOWtests/snapshot_tests/snapshot_apps/option_list.py1
LOW…sts/snapshot_tests/snapshot_apps/recompose_on_mount.py1
LOW…ts/snapshot_tests/snapshot_apps/nested_auto_heights.py3
LOW…/snapshot_tests/snapshot_apps/data_table_add_column.py3
LOWtests/snapshot_tests/snapshot_apps/text_selection.py6
LOWtests/snapshot_tests/snapshot_apps/log_write.py3
LOWtests/css/test_parse.py1
LOWtests/css/test_nested_css.py1
LOWtests/css/test_tokenize.py1
LOWtests/text_area/test_history.py1
LOWtests/input/test_input_replace.py1
LOWtests/input/test_input_key_movement_actions.py3
LOWtests/input/test_input_properties.py1
396 more matches not shown…
Deep Nesting151 hits · 141 pts
SeverityFileLineSnippet
LOWtests/test_parser.py29
LOWtests/test_focus.py306
LOWtests/test_focus.py342
LOWtests/test_tabbed_content.py798
LOWtests/test_tabbed_content.py824
LOWtests/test_tabbed_content.py802
LOWtests/test_tabbed_content.py828
LOWtests/snapshot_tests/snapshot_apps/hatch.py43
LOWtests/snapshot_tests/snapshot_apps/auto_tab_active.py8
LOWtests/snapshot_tests/snapshot_apps/grid_gutter.py29
LOWexamples/calculator.py138
LOWexamples/dictionary.py53
LOWsrc/textual/screen.py408
LOWsrc/textual/screen.py458
LOWsrc/textual/screen.py828
LOWsrc/textual/screen.py931
LOWsrc/textual/screen.py1097
LOWsrc/textual/screen.py1316
LOWsrc/textual/screen.py1489
LOWsrc/textual/screen.py1630
LOWsrc/textual/screen.py1755
LOWsrc/textual/screen.py1820
LOWsrc/textual/_border.py326
LOWsrc/textual/_border.py407
LOWsrc/textual/message_pump.py562
LOWsrc/textual/message_pump.py634
LOWsrc/textual/message_pump.py707
LOWsrc/textual/message_pump.py743
LOWsrc/textual/_import_app.py35
LOWsrc/textual/color.py514
LOWsrc/textual/command.py347
LOWsrc/textual/widget.py1217
LOWsrc/textual/widget.py3951
LOWsrc/textual/widget.py4545
LOWsrc/textual/widget.py4695
LOWsrc/textual/signal.py105
LOWsrc/textual/style.py166
LOWsrc/textual/_styles_cache.py267
LOWsrc/textual/compose.py12
LOWsrc/textual/_resolve.py18
LOWsrc/textual/_resolve.py121
LOWsrc/textual/_wrap.py32
LOWsrc/textual/_loop.py48
LOWsrc/textual/design.py91
LOWsrc/textual/design.py248
LOWsrc/textual/markup.py181
LOWsrc/textual/markup.py323
LOWsrc/textual/_arrange.py127
LOWsrc/textual/_arrange.py204
LOWsrc/textual/_compositor.py186
LOWsrc/textual/_compositor.py324
LOWsrc/textual/_compositor.py525
LOWsrc/textual/_compositor.py768
LOWsrc/textual/_compositor.py900
LOWsrc/textual/_compositor.py1203
LOWsrc/textual/_compositor.py548
LOWsrc/textual/walk.py42
LOWsrc/textual/content.py415
LOWsrc/textual/content.py806
LOWsrc/textual/content.py1452
91 more matches not shown…
Excessive Try-Catch Wrapping69 hits · 64 pts
SeverityFileLineSnippet
LOWexamples/calculator.py151 except Exception:
LOWexamples/dictionary.py45 except Exception:
LOWexamples/code_browser.py74 except Exception:
LOWsrc/textual/screen.py561 except Exception:
LOWsrc/textual/screen.py1382 except Exception as error:
LOWsrc/textual/worker.py375 except Exception as error:
LOWsrc/textual/pilot.py488 except Exception:
LOWsrc/textual/message_pump.py606 except Exception as error:
LOWsrc/textual/message_pump.py646 except Exception as error:
LOWsrc/textual/message_pump.py666 except Exception as error:
LOWsrc/textual/message_pump.py690 except Exception as error:
LOWsrc/textual/message_pump.py703 except Exception as error:
LOWsrc/textual/message_pump.py895 except Exception:
LOWsrc/textual/message_pump.py910 except Exception:
LOWsrc/textual/message_pump.py917 except Exception as error:
LOWsrc/textual/_import_app.py66 except Exception as error:
LOWsrc/textual/command.py247 except Exception:
LOWsrc/textual/command.py315 except Exception:
MEDIUMsrc/textual/widget.py3903def __rich_repr__(self) -> rich.repr.Result:
LOWsrc/textual/widget.py1311 except Exception:
LOWsrc/textual/widget.py4724 except Exception as error:
LOWsrc/textual/signal.py134 except Exception as error:
LOWsrc/textual/style.py348 except Exception:
LOWsrc/textual/compose.py84 except Exception as error:
LOWsrc/textual/_markup_playground.py111 except Exception:
LOWsrc/textual/_markup_playground.py131 except Exception as error:
LOWsrc/textual/_markup_playground.py143 except Exception as error:
LOWsrc/textual/timer.py194 except Exception as error:
LOWsrc/textual/actions.py47 except Exception:
LOWsrc/textual/_doc.py56 except Exception as error:
LOWsrc/textual/_doc.py184 except Exception:
LOWsrc/textual/markup.py318 except Exception as error:
LOWsrc/textual/_win_sleep.py32except Exception:
LOWsrc/textual/content.py1365 except Exception:
LOWsrc/textual/_xterm_parser.py439 except Exception:
LOWsrc/textual/geometry.py301 except Exception:
LOWsrc/textual/geometry.py707 except Exception:
LOWsrc/textual/app.py1755 except Exception as error:
LOWsrc/textual/app.py2270 except Exception:
LOWsrc/textual/app.py2398 except Exception as error:
LOWsrc/textual/app.py3410 except Exception as error:
LOWsrc/textual/app.py3451 except Exception:
LOWsrc/textual/app.py3515 except Exception as error:
LOWsrc/textual/app.py3865 except Exception as error:
LOWsrc/textual/highlight.py163 except Exception:
LOWsrc/textual/_debug.py25 except Exception:
LOWsrc/textual/lazy.py120 except Exception:
LOWsrc/textual/driver.py259 except Exception as error:
LOWsrc/textual/_dispatch_key.py52 except Exception:
LOWsrc/textual/_work_decorator.py137 except Exception:
LOWsrc/textual/demo/home.py193 except Exception:
LOWsrc/textual/demo/page.py73 except Exception:
LOWsrc/textual/demo/widgets.py409 except Exception:
LOWsrc/textual/drivers/_input_reader_windows.py29 except Exception:
LOWsrc/textual/drivers/windows_driver.py118 except Exception as error:
LOWsrc/textual/drivers/win32.py297 except Exception as error:
LOWsrc/textual/drivers/linux_inline_driver.py301 except Exception as error:
LOWsrc/textual/drivers/web_driver.py208 except Exception:
LOWsrc/textual/drivers/web_driver.py283 except Exception as error:
LOWsrc/textual/drivers/linux_driver.py371 except Exception:
9 more matches not shown…
Cross-Language Confusion6 hits · 28 pts
SeverityFileLineSnippet
HIGHtests/snapshot_tests/language_snippets.py485 if age >= 18 && isStudent {
HIGHtests/snapshot_tests/language_snippets.py536if (age >= 18 && isStudent) {
HIGHtests/snapshot_tests/language_snippets.py747 if age >= 18 && is_student {
HIGHtests/snapshot_tests/language_snippets.py761 fruits.push("grape");
HIGHtests/snapshot_tests/language_snippets.py865 if (age >= 18 && isStudent) {
HIGHsrc/textual/layout.py112 Placements with adjusted region, or same instance if offset is null.
Fake / Example Data16 hits · 16 pts
SeverityFileLineSnippet
LOWtests/snapshot_tests/language_snippets.py128> Lorem ipsum
LOWtests/snapshot_tests/language_snippets.py205street = "123 Main St"
LOWtests/snapshot_tests/language_snippets.py211name = "John Doe"
LOWtests/snapshot_tests/language_snippets.py398 "name": "John Doe",
LOWtests/snapshot_tests/language_snippets.py402 "street": "123 Main St",
LOWtests/snapshot_tests/test_snapshots.py907 panel = Panel("lorem ipsum dolor sit amet lorem ipsum dolor sit amet")
LOWtests/snapshot_tests/test_snapshots.py907 panel = Panel("lorem ipsum dolor sit amet lorem ipsum dolor sit amet")
LOW…snapshot_tests/snapshot_apps/data_table_auto_height.py4LORUM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et do
LOW…snapshot_tests/snapshot_apps/data_table_auto_height.py4LORUM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et do
LOWdocs/blog/posts/release0-6-0.md79Use this widget in place of custom widgets you have yet to build when designing your UI. The colors are automatically cy
LOWexamples/theme_sandbox.py51Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla facilisi. Sed euismod, nunc sit amet aliquam lacinia, nis
LOWexamples/theme_sandbox.py51Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla facilisi. Sed euismod, nunc sit amet aliquam lacinia, nis
LOWsrc/textual/_styles_cache.py50 ┃ Lorem ipsum dolor ┃◀┐ border
LOWsrc/textual/widgets/_placeholder.py49_LOREM_IPSUM_PLACEHOLDER_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat ac elit sit amet
LOWsrc/textual/widgets/_placeholder.py49_LOREM_IPSUM_PLACEHOLDER_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat ac elit sit amet
LOWsrc/textual/widgets/_placeholder.py69 | text | Lorem Ipsum text. |
Redundant / Tautological Comments8 hits · 12 pts
SeverityFileLineSnippet
LOWtests/test_box_model.py70 # Set width to auto-detect
LOWtests/test_box_model.py77 # Set width to 100 vw which should make it the width of the parent
LOWtests/test_box_model.py120 # Set height to 100 vw which should make it the height of the parent
LOWsrc/textual/_cells.py29 # Check if the click landed on a character within this part.
LOWsrc/textual/_cells.py38 # Check if the click falls within the boundary of the expanded tab.
LOWsrc/textual/app.py4778 # Check if we're in an environment that permits this kind of
LOWsrc/textual/renderables/bar.py64 # Check if we start/end on a number that rounds to a .5
LOWsrc/textual/css/stylesheet.py673 # Check if this can / should be animated. It doesn't suffice to check
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippet
MEDIUMtests/test_query.py171 # Create a fake app to hold everything else.
MEDIUMsrc/textual/_doc.py17# This module defines our "Custom Fences", powered by SuperFences
MEDIUMsrc/textual/_compositor.py1178 # Create a crop region that surrounds all updates.
MEDIUMsrc/textual/document/_history.py101 # Create a new batch (creating a "checkpoint").
Over-Commented Block4 hits · 4 pts
SeverityFileLineSnippet
LOWtests/test_binding_inheritance.py401async def test_focused_child_widget_with_movement_bindings_no_inherit() -> None:
LOWtests/test_binding_inheritance.py461
LOWtests/test_binding_inheritance.py521#
LOWsrc/textual/drivers/linux_driver.py201 os.kill(os.getpid(), signal.SIGSTOP)
AI Slop Vocabulary1 hit · 1 pts
SeverityFileLineSnippet
MEDIUMsrc/textual/signal.py33 """A signal that a widget may subscribe to, in order to invoke callbacks when an associated event occurs."""