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.
This report summarizes scanner evidence for Textualize/textual, a Python project with 37,425 GitHub stars. SynthScan examined 175,190 lines of code across 1331 source files, recording 2466 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 21.1 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1598 finding(s).
Are imports declared and package/API names verified? 478 finding(s).
Are wrappers, guards, and repeated structures necessary? 1702 finding(s).
Which changes need focused human review? 2466 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2466 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_collapsible.py | 26 | async def test_compose_default_collapsible(): | CODE |
| LOW | tests/test_collapsible.py | 39 | async def test_compose_empty_collapsible(): | CODE |
| LOW | tests/test_collapsible.py | 51 | async def test_compose_nested_collapsible(): | CODE |
| LOW | tests/test_collapsible.py | 66 | async def test_compose_expanded_collapsible(): | CODE |
| LOW | tests/test_collapsible.py | 79 | async def test_collapsible_collapsed_contents_display_false(): | CODE |
| LOW | tests/test_collapsible.py | 91 | async def test_collapsible_expanded_contents_display_true(): | CODE |
| LOW | tests/test_collapsible.py | 172 | async def test_expand_via_watcher_message(): | CODE |
| LOW | tests/test_collapsible.py | 216 | async def test_collapse_via_watcher_message(): | CODE |
| LOW | tests/test_collapsible.py | 238 | async def test_collapsible_title_reactive_change(): | CODE |
| LOW | tests/test_tabs.py | 36 | async def test_compose_tabs_from_strings(): | CODE |
| LOW | tests/test_tabs.py | 50 | async def test_compose_tabs_from_tabs(): | CODE |
| LOW | tests/test_tabs.py | 115 | async def test_add_tab_before_badly(): | CODE |
| LOW | tests/test_tabs.py | 194 | async def test_add_tab_before_and_after(): | CODE |
| LOW | tests/test_tabs.py | 250 | async def test_remove_tabs_reversed(): | CODE |
| LOW | tests/test_tabs.py | 300 | async def test_change_active_from_code(): | CODE |
| LOW | tests/test_tabs.py | 323 | async def test_navigate_tabs_with_keyboard(): | CODE |
| LOW | tests/test_tabs.py | 353 | async def test_navigate_empty_tabs_with_keyboard(): | CODE |
| LOW | tests/test_tabs.py | 375 | async def test_navigate_tabs_with_mouse(): | CODE |
| LOW | tests/test_tabs.py | 426 | async def test_change_tab_with_code_messages(): | CODE |
| LOW | tests/test_tabs.py | 437 | async def test_remove_tabs_messages(): | CODE |
| LOW | tests/test_tabs.py | 454 | async def test_reverse_remove_tabs_messages(): | CODE |
| LOW | tests/test_tabs.py | 468 | async def test_keyboard_navigation_messages(): | CODE |
| LOW | tests/test_tabs.py | 482 | async def test_mouse_navigation_messages(): | CODE |
| LOW | tests/test_tabs.py | 496 | async def test_disabled_tab_is_not_activated_by_clicking_underline(): | CODE |
| LOW | tests/test_resolve.py | 64 | async def test_resolve_fraction_unit(): | CODE |
| LOW | tests/test_resolve.py | 127 | async def test_resolve_fraction_unit_stress_test(): | CODE |
| LOW | tests/test_screen_modes.py | 146 | async def test_screen_stack_preserved(ModesApp: Type[App]): | CODE |
| LOW | tests/test_screen_modes.py | 171 | async def test_multiple_mode_callbacks(): | CODE |
| LOW⚡ | tests/test_data_table.py | 251 | async def test_add_row_duplicate_key(): | CODE |
| LOW⚡ | tests/test_data_table.py | 261 | async def test_add_row_too_many_values(): | CODE |
| LOW⚡ | tests/test_data_table.py | 271 | async def test_add_column_duplicate_key(): | CODE |
| LOW⚡ | tests/test_data_table.py | 280 | async def test_add_column_with_width(): | CODE |
| LOW⚡ | tests/test_data_table.py | 445 | async def test_get_cell_returns_value_at_cell(): | CODE |
| LOW⚡ | tests/test_data_table.py | 454 | async def test_get_cell_invalid_row_key(): | CODE |
| LOW⚡ | tests/test_data_table.py | 464 | async def test_get_cell_invalid_column_key(): | CODE |
| LOW⚡ | tests/test_data_table.py | 474 | async def test_get_cell_coordinate_returns_coordinate(): | CODE |
| LOW⚡ | tests/test_data_table.py | 686 | async def test_update_cell_cell_exists(): | CODE |
| LOW⚡ | tests/test_data_table.py | 696 | async def test_update_cell_cell_doesnt_exist(): | CODE |
| LOW⚡ | tests/test_data_table.py | 706 | async def test_update_cell_invalid_column_key(): | CODE |
| LOW | tests/test_data_table.py | 67 | async def test_datatable_message_emission(): | CODE |
| LOW | tests/test_data_table.py | 172 | async def test_empty_table_interactions(): | CODE |
| LOW | tests/test_data_table.py | 182 | async def test_cursor_movement_with_home_pagedown_etc(show_header): | CODE |
| LOW | tests/test_data_table.py | 221 | async def test_add_rows_user_defined_keys(): | CODE |
| LOW | tests/test_data_table.py | 303 | async def test_add_columns_with_tuples(): | CODE |
| LOW | tests/test_data_table.py | 322 | async def test_add_columns_user_defined_keys(): | CODE |
| LOW | tests/test_data_table.py | 344 | async def test_remove_row_and_update(): | CODE |
| LOW | tests/test_data_table.py | 371 | async def test_remove_column_and_update(): | CODE |
| LOW | tests/test_data_table.py | 426 | async def test_initial_column_widths() -> None: | CODE |
| LOW | tests/test_data_table.py | 492 | async def test_get_cell_coordinate_invalid_row_key(): | CODE |
| LOW | tests/test_data_table.py | 503 | async def test_get_cell_coordinate_invalid_column_key(): | CODE |
| LOW | tests/test_data_table.py | 514 | async def test_get_cell_at_returns_value_at_cell(): | CODE |
| LOW | tests/test_data_table.py | 523 | async def test_get_cell_at_exception(): | CODE |
| LOW | tests/test_data_table.py | 549 | async def test_get_row_invalid_row_key(): | CODE |
| LOW | tests/test_data_table.py | 576 | async def test_get_row_at_invalid_index(index): | CODE |
| LOW | tests/test_data_table.py | 587 | async def test_get_row_index_returns_index(): | CODE |
| LOW | tests/test_data_table.py | 602 | async def test_get_row_index_invalid_row_key(): | CODE |
| LOW | tests/test_data_table.py | 627 | async def test_get_column_invalid_key(): | CODE |
| LOW | tests/test_data_table.py | 650 | async def test_get_column_at_invalid_index(index): | CODE |
| LOW | tests/test_data_table.py | 658 | async def test_get_column_index_returns_index(): | CODE |
| LOW | tests/test_data_table.py | 673 | async def test_get_column_index_invalid_column_key(): | CODE |
| 1214 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/textual/screen.py | 634 | Get the widget at a given coordinate. Args: x: X Coordinate. y: Y Coordinate. | STRING |
| HIGH | src/textual/screen.py | 649 | Get the widget, and its region directly under the mouse, and the first widget, region pair with a hover style. | STRING |
| HIGH | src/textual/screen.py | 741 | Get the screen region of a Widget. Args: widget: A Widget within the composition. Returns: | STRING |
| HIGH | src/textual/_path.py | 22 | Normalize the supplied CSSPathType into a list of paths. Args: css_path: Value to be normalized. Raise | STRING |
| HIGH | src/textual/pilot.py | 109 | Simulate a [`MouseDown`][textual.events.MouseDown] event at a specified position. The final position for the ev | STRING |
| HIGH | src/textual/pilot.py | 155 | Simulate a [`MouseUp`][textual.events.MouseUp] event at a specified position. The final position for the event | STRING |
| HIGH | src/textual/pilot.py | 202 | Simulate clicking with the mouse at a specified position. The final position to be clicked is computed based on | STRING |
| HIGH | src/textual/pilot.py | 260 | Simulate double clicking with the mouse at a specified position. Alias for `pilot.click(..., times=2)`. | STRING |
| HIGH | src/textual/pilot.py | 309 | Simulate triple clicking with the mouse at a specified position. Alias for `pilot.click(..., times=3)`. | STRING |
| HIGH | src/textual/pilot.py | 354 | Simulate hovering with the mouse cursor at a specified position. The final position to be hovered is computed b | STRING |
| HIGH | src/textual/pilot.py | 394 | Simulate a series of mouse events to be fired at a given position. The final position for the events is compute | STRING |
| HIGH | src/textual/pilot.py | 474 | Wait for the current screen and its children to have processed all pending events. Args: timeout: A | STRING |
| HIGH | src/textual/_import_app.py | 36 | Import an app from a path or import name. Args: import_name: A name to import, such as `foo.bar`, or a path | STRING |
| HIGH | src/textual/color.py | 515 | Parse a string containing a named color or CSS-style color. Colors may be parsed from the following formats: | STRING |
| HIGH | src/textual/widget.py | 697 | Get a common ancestors to both widgets. Raises: ValueError: If there is no common ancestor and `def | STRING |
| HIGH | src/textual/widget.py | 1094 | Return the first child (immediate descendent) of this node with the given ID. Args: id: The ID of t | STRING |
| HIGH | src/textual/widget.py | 1131 | Return the first descendant widget with the given ID. Performs a depth-first search rooted at this widget. | STRING |
| HIGH | src/textual/widget.py | 1155 | Get the first immediate child of a given type. Only returns exact matches, and so will not match subclasses of | STRING |
| HIGH | src/textual/widget.py | 1178 | Get a *Rich* style for a component. Args: names: Names of components. partial: Return a | STRING |
| HIGH | src/textual/widget.py | 1376 | Attempt to locate the point where the caller wants to mount something. Args: spot: The spot to find | STRING |
| HIGH | src/textual/widget.py | 1430 | Mount widgets below this widget (making this widget a container). Args: *widgets: The widget(s) to | STRING |
| HIGH | src/textual/widget.py | 1520 | Mount widgets from an iterable. Args: widgets: An iterable of widgets. before: Optional | STRING |
| HIGH | src/textual/widget.py | 1553 | Mount widgets from the result of a compose method. Example: ```python def on_key(self, even | STRING |
| HIGH | src/textual/_binary_encode.py | 149 | Recursively encode data. Args: datum: Data suitable for encoding. Raises: Type | STRING |
| HIGH | src/textual/_binary_encode.py | 170 | Load an encoded data structure from bytes. Args: encoded: Encoded data in bytes. Raises: Decod | STRING |
| HIGH | src/textual/_binary_encode.py | 211 | Get a number of bytes of encode data. Args: size: Number of bytes to retrieve. Raises: | STRING |
| HIGH | src/textual/_immutable_sequence_view.py | 53 | Return the index of the given item. Args: item: The item to find in the sequence. start | STRING |
| HIGH | src/textual/_duration.py | 19 | Args: duration: A string of the form `"2s"` or `"300ms"`, representing 2 seconds and 300 millis | STRING |
| HIGH | src/textual/actions.py | 27 | Parses an action string. Args: action: String containing action. Raises: ActionError: If the a | STRING |
| HIGH | src/textual/markup.py | 298 | Convert markup to Content. Args: markup: String containing markup. style: Optional base style. | STRING |
| HIGH | src/textual/markup.py | 328 | Internal function to convert markup to Content. Args: markup: String containing markup. style: Opti | STRING |
| HIGH | src/textual/_parser.py | 66 | Feed data to be parsed. Args: data: Data to parser. Raises: ParseError: If the | STRING |
| HIGH | src/textual/_compositor.py | 830 | Get the widget under a given coordinate. Args: x: X Coordinate. y: Y Coordinate. | STRING |
| HIGH | src/textual/_compositor.py | 971 | Get information regarding the relative position of a widget in the Compositor. Args: widget: The Wi | STRING |
| HIGH | src/textual/_event_broker.py | 18 | Extract action from meta dict. Args: event_name: Event to check from. meta: Meta information (store | STRING |
| HIGH | src/textual/content.py | 237 | Construct content from Text or str. If the argument is already Content, then return it unmodified. This | STRING |
| HIGH | src/textual/_segment_tools.py | 38 | Given a character index, return the cell position of that character within an Iterable of Segments. This is the sum | STRING |
| HIGH | src/textual/geometry.py | 1219 | Unpack padding specified in CSS style. Args: pad: An integer, or tuple of 1, 2, or 4 integers. | STRING |
| HIGH | src/textual/app.py | 1251 | Get the screen stack for the given mode, or the current mode if no mode is specified. Args: mode: N | STRING |
| HIGH | src/textual/app.py | 1794 | Run a callable from another thread, and return the result. Like asyncio apps in general, Textual apps are not t | STRING |
| HIGH | src/textual/app.py | 2433 | Get the first child (immediate descendant) of this DOMNode with the given ID. Args: id: The ID of t | STRING |
| HIGH | src/textual/app.py | 2466 | Get the first descendant widget with the given ID. Performs a breadth-first search rooted at the current screen | STRING |
| HIGH | src/textual/app.py | 2491 | Get a child of a give type. Args: expect_type: The type of the expected child. Raises: | STRING |
| HIGH | src/textual/app.py | 2531 | Mount the given widgets relative to the app's screen. Args: *widgets: The widget(s) to mount. | STRING |
| HIGH | src/textual/app.py | 2561 | Mount widgets from an iterable. Args: widgets: An iterable of widgets. before: Optional | STRING |
| HIGH | src/textual/app.py | 2631 | Switch to a given mode. Args: mode: The mode to switch to. Returns: An optiona | STRING |
| HIGH | src/textual/app.py | 2764 | Get an installed screen. Example: ```python my_screen = self.get_screen("settings", MyS | STRING |
| HIGH | src/textual/app.py | 2798 | Get an installed screen and an AwaitMount object. If the screen isn't running, it will be registered before it | STRING |
| HIGH | src/textual/app.py | 2903 | Push a new [screen](/guide/screens) on the screen stack, making it the current screen. Args: screen | STRING |
| HIGH | src/textual/app.py | 3037 | Install a screen. Installing a screen prevents Textual from destroying it when it is no longer on the screen st | STRING |
| HIGH | src/textual/app.py | 4173 | Parse an action. Args: action: An action string. default_namespace: Namespace to user w | STRING |
| HIGH | src/textual/visual.py | 76 | Get a visual instance from an object. If the object does not support the Visual protocol and is a Rich renderable, | STRING |
| HIGH | src/textual/binding.py | 379 | Get a list of bindings for a given key. Args: key: Key to look up. Raises: NoB | STRING |
| HIGH | src/textual/_dispatch_key.py | 13 | Dispatch a key event to method. This function will call the method named 'key_<event.key>' on a node if it exists. | STRING |
| HIGH | src/textual/dom.py | 602 | Get a "component" styles object (must be defined in COMPONENT_CLASSES classvar). Args: names: Names | STRING |
| HIGH | src/textual/dom.py | 1467 | Get a widget from this widget's children that matches a selector or widget type. Args: selector: A | STRING |
| HIGH | src/textual/dom.py | 1553 | Get a widget from this widget's children that matches a selector or widget type, or `None` if there is no match. | STRING |
| HIGH | src/textual/dom.py | 1590 | Get a widget from this widget's children that matches a selector or widget type. !!! Note This meth | STRING |
| HIGH | src/textual/dom.py | 1670 | Get an ancestor which matches a query. Args: selector: A TCSS selector. expect_type: Ex | STRING |
| HIGH | src/textual/dom.py | 1910 | Check whether an action is enabled. Implement this method to add logic for [dynamic actions](/guide/actions#dyn | STRING |
| 57 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/snapshot_tests/test_snapshots.py | 4859 | except ColorParseError: | CODE |
| HIGH | docs/examples/guide/reactivity/watch01.py | 24 | except ColorParseError: | CODE |
| HIGH | docs/examples/guide/compound/byte03.py | 113 | except ValueError: | CODE |
| HIGH | examples/calculator.py | 87 | except NoMatches: | CODE |
| HIGH | src/textual/screen.py | 1014 | except NoMatches: | CODE |
| HIGH | src/textual/screen.py | 1568 | except NoMatches: | CODE |
| HIGH | src/textual/screen.py | 1612 | except NoMatches: | CODE |
| HIGH | src/textual/screen.py | 1991 | except ValueError: | CODE |
| HIGH | src/textual/screen.py | 1997 | except ValueError: | CODE |
| HIGH | src/textual/screen.py | 1595 | except NoWidget: | CODE |
| HIGH | src/textual/screen.py | 1663 | except NoMatches: | CODE |
| HIGH | src/textual/screen.py | 1647 | except NoMatches: | CODE |
| HIGH | src/textual/worker.py | 438 | except LookupError: | CODE |
| HIGH | src/textual/message_pump.py | 719 | except LookupError: | CODE |
| HIGH | src/textual/message_pump.py | 366 | except QueueEmpty: | CODE |
| HIGH | src/textual/message_pump.py | 572 | except CancelledError: | CODE |
| HIGH | src/textual/message_pump.py | 547 | except CancelledError: | CODE |
| HIGH | src/textual/color.py | 560 | except ValueError: | CODE |
| HIGH | src/textual/command.py | 974 | except TimeoutError: | CODE |
| HIGH | src/textual/widget.py | 851 | except NoScreen: | CODE |
| HIGH | src/textual/widget.py | 3910 | except AttributeError: | CODE |
| HIGH | src/textual/widget.py | 4105 | except (ScreenStackError, NoActiveAppError, NoScreen): | CODE |
| HIGH | src/textual/widget.py | 4610 | except NoScreen: | CODE |
| HIGH | src/textual/widget.py | 4506 | except NoActiveAppError: | CODE |
| HIGH | src/textual/widget.py | 4550 | except NoScreen: | CODE |
| HIGH | src/textual/widget.py | 4593 | except NoScreen: | CODE |
| HIGH | src/textual/widget.py | 163 | except NoScreen: | CODE |
| HIGH | src/textual/_callback.py | 21 | except AttributeError: | CODE |
| HIGH | src/textual/_callback.py | 35 | except TypeError: | CODE |
| HIGH | src/textual/timer.py | 147 | except CancelledError: | CODE |
| HIGH | src/textual/timer.py | 121 | except CancelledError: | CODE |
| HIGH | src/textual/reactive.py | 187 | except AttributeError: | CODE |
| HIGH | src/textual/keys.py | 303 | except KeyError: | CODE |
| HIGH | src/textual/keys.py | 331 | except KeyError: | CODE |
| HIGH | src/textual/keys.py | 335 | except KeyError: | CODE |
| HIGH | src/textual/_parser.py | 87 | except StopIteration: | CODE |
| HIGH | src/textual/_compositor.py | 823 | except KeyError: | CODE |
| HIGH | src/textual/_compositor.py | 988 | except KeyError: | CODE |
| HIGH | src/textual/_compositor.py | 993 | except KeyError: | CODE |
| HIGH | src/textual/worker_manager.py | 180 | except asyncio.CancelledError: | CODE |
| HIGH | src/textual/content.py | 765 | except AttributeError: | CODE |
| HIGH | src/textual/_animator.py | 267 | except asyncio.CancelledError: | CODE |
| HIGH | src/textual/_animator.py | 391 | except KeyError: | CODE |
| HIGH | src/textual/geometry.py | 1486 | except ImportError: | CODE |
| HIGH | src/textual/app.py | 3573 | except ScreenStackError: | CODE |
| HIGH | src/textual/app.py | 3811 | except ScreenError: | CODE |
| HIGH | src/textual/app.py | 4388 | except (ScreenStackError, NoScreen): | CODE |
| HIGH | src/textual/app.py | 4476 | except NoMatches: | CODE |
| HIGH | src/textual/app.py | 4516 | except ScreenStackError: | CODE |
| HIGH | src/textual/app.py | 4601 | except ScreenStackError: | CODE |
| HIGH | src/textual/app.py | 4618 | except NoScreen: | CODE |
| HIGH | src/textual/app.py | 766 | except ImportError: | CODE |
| HIGH | src/textual/app.py | 2353 | except RuntimeError: | CODE |
| HIGH | src/textual/app.py | 3210 | except NoWidget: | CODE |
| HIGH | src/textual/app.py | 3462 | except asyncio.CancelledError: | CODE |
| HIGH | src/textual/app.py | 4438 | except NoScreen: | CODE |
| HIGH | src/textual/app.py | 4403 | except (ScreenStackError, NoScreen): | CODE |
| HIGH | src/textual/app.py | 2301 | except asyncio.CancelledError: | CODE |
| HIGH | src/textual/app.py | 4118 | except NoWidget: | CODE |
| HIGH | src/textual/app.py | 4134 | except NoScreen: | CODE |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_modal.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | tests/snapshot_tests/test_snapshots.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | tests/snapshot_tests/snapshot_apps/log_write_lines.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | tests/snapshot_tests/snapshot_apps/text_selection.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/screens/modal03.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/screens/modal02.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/screens/modal01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/border_title.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/border01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/dimensions04.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/dimensions01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/outline01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/padding02.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/dimensions02.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/margin01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/padding01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/dimensions03.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/guide/styles/box_sizing01.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbar_size.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbars2.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbar_gutter.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbar_corner_color.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/overflow.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/margin.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/outline_vs_border.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/text_style.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/outline.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbars.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbar_visibility.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/padding.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/text_style_all.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/styles/scrollbar_size2.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/widgets/log.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | examples/sidebar.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | src/textual/demo/widgets.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | tests/snapshot_tests/test_snapshots.py | 0 | \ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name) | STRING |
| HIGH | docs/examples/widgets/text_area_selection.py | 0 | \ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name) | STRING |
| HIGH | docs/examples/widgets/text_area_example.py | 0 | \ def hello(name): print("hello" + name) def goodbye(name): print("goodbye" + name) | STRING |
| HIGH | tests/snapshot_tests/test_snapshots.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | tests/text_area/test_selection_bindings.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | tests/text_area/test_edit_via_bindings.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | tests/text_area/test_selection.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | docs/examples/guide/widgets/tooltip02.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | docs/examples/guide/widgets/tooltip01.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | docs/examples/styles/text_overflow.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | docs/examples/styles/text_wrap.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | tests/text_area/test_edit_via_api.py | 0 | \ i must not fear. fear is the mind-killer. fear hello, world!is the little-death that brings total obliteration. i will | STRING |
| HIGH | tests/snapshot_tests/snapshot_apps/unscoped_css.py | 0 | mywidget { height: auto; border: magenta; } label { border: solid green; } | STRING |
| HIGH | tests/snapshot_tests/snapshot_apps/scoped_css.py | 0 | mywidget { height: auto; border: magenta; } label { border: solid green; } | STRING |
| HIGH | docs/blog/posts/release0-38-0.md | 0 | mywidget { height: auto; border: magenta; } label { border: solid green; } | STRING |
| HIGH | …/snapshot_tests/snapshot_apps/data_table_row_cursor.py | 0 | lane,swimmer,country,time 4,joseph schooling,singapore,50.39 2,michael phelps,united states,51.14 5,chad le clos,south a | STRING |
| HIGH | …apshot_tests/snapshot_apps/data_table_column_cursor.py | 0 | lane,swimmer,country,time 4,joseph schooling,singapore,50.39 2,michael phelps,united states,51.14 5,chad le clos,south a | STRING |
| HIGH | docs/examples/widgets/rich_log.py | 0 | lane,swimmer,country,time 4,joseph schooling,singapore,50.39 2,michael phelps,united states,51.14 5,chad le clos,south a | STRING |
| HIGH | src/textual/demo/widgets.py | 0 | lane,swimmer,country,time 4,joseph schooling,singapore,50.39 2,michael phelps,united states,51.14 5,chad le clos,south a | STRING |
| HIGH | tests/select/test_remove.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/widgets/select_from_values_widget.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/widgets/select_widget.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/examples/widgets/select_widget_no_blank.py | 0 | i must not fear. fear is the mind-killer. fear is the little-death that brings total obliteration. i will face my fear. | STRING |
| HIGH | docs/blog/posts/spinners-and-pbs-in-textual.md | 0 | event handler called when widget is added to the app. | STRING |
| HIGH | docs/examples/tutorial/stopwatch05.py | 0 | event handler called when widget is added to the app. | STRING |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/widget_documentation.py | 7 | CODE | |
| LOW | tests/test_command.py | 1 | CODE | |
| LOW | tests/test_collapsible.py | 1 | CODE | |
| LOW | tests/test_tabs.py | 1 | CODE | |
| LOW | tests/test_data_table.py | 1 | CODE | |
| LOW | tests/test_layout_resolve.py | 1 | CODE | |
| LOW | tests/test_unmount.py | 1 | CODE | |
| LOW | tests/test_features.py | 1 | CODE | |
| LOW | tests/test_validation.py | 1 | CODE | |
| LOW | tests/test_box_model.py | 1 | CODE | |
| LOW | tests/test_reactive.py | 1 | CODE | |
| LOW | tests/test_modal.py | 1 | CODE | |
| LOW | tests/test_actions.py | 1 | CODE | |
| LOW | tests/test_styles_cache.py | 1 | CODE | |
| LOW | tests/test_widget_navigation.py | 1 | CODE | |
| LOW | tests/test_on.py | 1 | CODE | |
| LOW | tests/test_widget_child_moving.py | 1 | CODE | |
| LOW | tests/test_content_switcher.py | 1 | CODE | |
| LOW | tests/test_binding_inheritance.py | 12 | CODE | |
| LOW | tests/test_widget.py | 629 | CODE | |
| LOW | tests/test_content.py | 1 | CODE | |
| LOW | tests/test_dynamic_bindings.py | 1 | CODE | |
| LOW | tests/test_tabbed_content.py | 1 | CODE | |
| LOW | tests/test_path.py | 1 | CODE | |
| LOW | tests/test_animator.py | 1 | CODE | |
| LOW | tests/test_screens.py | 1 | CODE | |
| LOW | tests/test_markdown.py | 3 | CODE | |
| LOW | tests/test_cache.py | 1 | CODE | |
| LOW | tests/test_cache.py | 1 | CODE | |
| LOW | tests/test_keymap.py | 1 | CODE | |
| LOW | tests/test_markup.py | 1 | CODE | |
| LOW | tests/tree/test_tree_cursor.py | 1 | CODE | |
| LOW | tests/tree/test_tree_messages.py | 1 | CODE | |
| LOW | tests/tree/test_tree_availability.py | 1 | CODE | |
| LOW | tests/tree/test_tree_clearing.py | 1 | CODE | |
| LOW | tests/tree/test_directory_tree.py | 1 | CODE | |
| LOW | tests/tree/test_tree_expand_etc.py | 1 | CODE | |
| LOW | tests/snapshot_tests/test_snapshots.py | 1 | CODE | |
| LOW | tests/snapshot_tests/test_snapshots.py | 13 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/scroll_page.py | 1 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/recompose.py | 1 | CODE | |
| LOW | …/snapshot_tests/snapshot_apps/directory_tree_reload.py | 3 | CODE | |
| LOW | …_tests/snapshot_apps/pretty_grid_gutter_interaction.py | 3 | CODE | |
| LOW | …apshot_tests/snapshot_apps/auto_grid_default_height.py | 1 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/dynamic_bindings.py | 1 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/mount_style_fix.py | 1 | CODE | |
| LOW | …t_tests/snapshot_apps/option_list_multiline_options.py | 1 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/option_list.py | 1 | CODE | |
| LOW | …sts/snapshot_tests/snapshot_apps/recompose_on_mount.py | 1 | CODE | |
| LOW | …ts/snapshot_tests/snapshot_apps/nested_auto_heights.py | 3 | CODE | |
| LOW | …/snapshot_tests/snapshot_apps/data_table_add_column.py | 3 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/text_selection.py | 6 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/log_write.py | 3 | CODE | |
| LOW | tests/css/test_parse.py | 1 | CODE | |
| LOW | tests/css/test_nested_css.py | 1 | CODE | |
| LOW | tests/css/test_tokenize.py | 1 | CODE | |
| LOW | tests/text_area/test_history.py | 1 | CODE | |
| LOW | tests/input/test_input_replace.py | 1 | CODE | |
| LOW | tests/input/test_input_key_movement_actions.py | 3 | CODE | |
| LOW | tests/input/test_input_properties.py | 1 | CODE | |
| 396 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_parser.py | 29 | CODE | |
| LOW | tests/test_focus.py | 306 | CODE | |
| LOW | tests/test_focus.py | 342 | CODE | |
| LOW | tests/test_tabbed_content.py | 798 | CODE | |
| LOW | tests/test_tabbed_content.py | 824 | CODE | |
| LOW | tests/test_tabbed_content.py | 802 | CODE | |
| LOW | tests/test_tabbed_content.py | 828 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/hatch.py | 43 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/auto_tab_active.py | 8 | CODE | |
| LOW | tests/snapshot_tests/snapshot_apps/grid_gutter.py | 29 | CODE | |
| LOW | examples/calculator.py | 138 | CODE | |
| LOW | examples/dictionary.py | 53 | CODE | |
| LOW | src/textual/screen.py | 408 | CODE | |
| LOW | src/textual/screen.py | 458 | CODE | |
| LOW | src/textual/screen.py | 828 | CODE | |
| LOW | src/textual/screen.py | 931 | CODE | |
| LOW | src/textual/screen.py | 1097 | CODE | |
| LOW | src/textual/screen.py | 1316 | CODE | |
| LOW | src/textual/screen.py | 1489 | CODE | |
| LOW | src/textual/screen.py | 1630 | CODE | |
| LOW | src/textual/screen.py | 1755 | CODE | |
| LOW | src/textual/screen.py | 1820 | CODE | |
| LOW | src/textual/_border.py | 326 | CODE | |
| LOW | src/textual/_border.py | 407 | CODE | |
| LOW | src/textual/message_pump.py | 562 | CODE | |
| LOW | src/textual/message_pump.py | 634 | CODE | |
| LOW | src/textual/message_pump.py | 707 | CODE | |
| LOW | src/textual/message_pump.py | 743 | CODE | |
| LOW | src/textual/_import_app.py | 35 | CODE | |
| LOW | src/textual/color.py | 514 | CODE | |
| LOW | src/textual/command.py | 347 | CODE | |
| LOW | src/textual/widget.py | 1217 | CODE | |
| LOW | src/textual/widget.py | 3951 | CODE | |
| LOW | src/textual/widget.py | 4545 | CODE | |
| LOW | src/textual/widget.py | 4695 | CODE | |
| LOW | src/textual/signal.py | 105 | CODE | |
| LOW | src/textual/style.py | 166 | CODE | |
| LOW | src/textual/_styles_cache.py | 267 | CODE | |
| LOW | src/textual/compose.py | 12 | CODE | |
| LOW | src/textual/_resolve.py | 18 | CODE | |
| LOW | src/textual/_resolve.py | 121 | CODE | |
| LOW | src/textual/_wrap.py | 32 | CODE | |
| LOW | src/textual/_loop.py | 48 | CODE | |
| LOW | src/textual/design.py | 91 | CODE | |
| LOW | src/textual/design.py | 248 | CODE | |
| LOW | src/textual/markup.py | 181 | CODE | |
| LOW | src/textual/markup.py | 323 | CODE | |
| LOW | src/textual/_arrange.py | 127 | CODE | |
| LOW | src/textual/_arrange.py | 204 | CODE | |
| LOW | src/textual/_compositor.py | 186 | CODE | |
| LOW | src/textual/_compositor.py | 324 | CODE | |
| LOW | src/textual/_compositor.py | 525 | CODE | |
| LOW | src/textual/_compositor.py | 768 | CODE | |
| LOW | src/textual/_compositor.py | 900 | CODE | |
| LOW | src/textual/_compositor.py | 1200 | CODE | |
| LOW | src/textual/_compositor.py | 548 | CODE | |
| LOW | src/textual/walk.py | 42 | CODE | |
| LOW | src/textual/content.py | 415 | CODE | |
| LOW | src/textual/content.py | 806 | CODE | |
| LOW | src/textual/content.py | 1452 | CODE | |
| 92 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/snapshot_tests/snapshot_apps/recompose.py | 50 | def update_progress(self) -> None: | STRING |
| LOW | docs/examples/guide/reactivity/recompose01.py | 23 | def update_time(self) -> None: | STRING |
| LOW | docs/examples/guide/reactivity/world_clock01.py | 38 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/guide/reactivity/world_clock02.py | 38 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/guide/reactivity/recompose02.py | 20 | def update_time(self) -> None: | STRING |
| LOW | docs/examples/guide/reactivity/world_clock03.py | 40 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/guide/workers/weather04.py | 26 | async def update_weather(self, city: str) -> None: | CODE |
| LOW | docs/examples/guide/workers/weather05.py | 28 | def update_weather(self, city: str) -> None: | CODE |
| LOW | docs/examples/guide/workers/weather01.py | 23 | async def update_weather(self, city: str) -> None: | CODE |
| LOW | docs/examples/guide/workers/weather02.py | 23 | async def update_weather(self, city: str) -> None: | CODE |
| LOW | docs/examples/guide/workers/weather03.py | 25 | async def update_weather(self, city: str) -> None: | CODE |
| LOW | docs/examples/tutorial/stopwatch05.py | 19 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/tutorial/stopwatch.py | 20 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/tutorial/stopwatch06.py | 20 | def update_time(self) -> None: | CODE |
| LOW | docs/examples/how-to/inline02.py | 31 | def update_clock(self) -> None: | STRING |
| LOW | docs/examples/how-to/inline01.py | 24 | def update_clock(self) -> None: | STRING |
| LOW | docs/examples/widgets/clock.py | 24 | def update_clock(self) -> None: | STRING |
| LOW | docs/examples/widgets/selection_list_selected.py | 35 | def update_selected_view(self) -> None: | CODE |
| LOW | examples/clock.py | 24 | def update_clock(self) -> None: | STRING |
| LOW | src/textual/screen.py | 583 | def update_pointer_shape(self) -> None: | CODE |
| LOW | src/textual/screen.py | 1489 | def _update_auto_focus(self) -> None: | CODE |
| LOW | src/textual/screen.py | 1564 | def _update_tooltip(self, widget: Widget) -> None: | CODE |
| LOW | src/textual/screen.py | 1816 | def _update_select(self) -> None: | CODE |
| LOW | src/textual/command.py | 62 | __all__ = [ | CODE |
| LOW | src/textual/widget.py | 1055 | def set_loading(self, loading: bool) -> None: | CODE |
| LOW | src/textual/widget.py | 1489 | def update_styles(children: list[DOMNode]) -> None: | CODE |
| LOW | src/textual/widget.py | 2683 | def _set_dirty(self, *regions: Region) -> None: | CODE |
| LOW | src/textual/widget.py | 2844 | def set_scroll(self, x: float | None, y: float | None) -> None: | CODE |
| LOW | src/textual/widget.py | 4589 | def set_focus(widget: Widget) -> None: | CODE |
| LOW | src/textual/theme.py | 523 | def set_app_theme(name: str) -> None: | CODE |
| LOW | src/textual/_styles_cache.py | 74 | def set_dirty(self, *regions: Region) -> None: | CODE |
| LOW | src/textual/compose.py | 9 | __all__ = ["compose"] | CODE |
| LOW | src/textual/_markup_playground.py | 103 | def update_markup(self) -> None: | STRING |
| LOW | src/textual/await_complete.py | 38 | def set_pre_await_callback(self, pre_await: CallbackType | None) -> None: | CODE |
| LOW | src/textual/clock.py | 63 | def set_time(self, time: float) -> None: | CODE |
| LOW | src/textual/cache.py | 17 | __all__ = ["LRUCache", "FIFOCache"] | CODE |
| LOW | src/textual/__init__.py | 25 | __all__ = [ | CODE |
| LOW | src/textual/message.py | 98 | def _set_forwarded(self) -> None: | CODE |
| LOW | src/textual/types.py | 29 | __all__ = [ | CODE |
| LOW | src/textual/markup.py | 13 | __all__ = ["MarkupError", "escape", "to_content"] | CODE |
| LOW | src/textual/_compositor.py | 1248 | def update_widgets(self, widgets: set[Widget]) -> None: | CODE |
| LOW | src/textual/_win_sleep.py | 13 | __all__ = ["sleep"] | CODE |
| LOW | src/textual/content.py | 38 | __all__ = ["ContentType", "Content", "Span"] | CODE |
| LOW | src/textual/_cells.py | 5 | __all__ = ["cell_len", "cell_width_to_column_index"] | CODE |
| LOW | src/textual/app.py | 2504 | def update_styles(self, node: DOMNode, animate: bool = True) -> None: | CODE |
| LOW | src/textual/app.py | 3150 | def set_focus(self, widget: Widget | None, scroll_visible: bool = True) -> None: | CODE |
| LOW | src/textual/app.py | 3195 | def _update_mouse_over(self, screen: Screen) -> None: | CODE |
| LOW | src/textual/app.py | 3916 | def _set_pointer_shape(self, shape: str) -> None: | CODE |
| LOW | src/textual/app.py | 4011 | def set_keymap(self, keymap: Keymap) -> None: | CODE |
| LOW | src/textual/app.py | 4027 | def update_keymap(self, keymap: Keymap) -> None: | CODE |
| LOW | src/textual/dom.py | 1807 | def update_node_styles(self, animate: bool = True) -> None: | CODE |
| LOW | src/textual/demo/game.py | 387 | def update_clock(self) -> None: | STRING |
| LOW | src/textual/demo/widgets.py | 372 | def update_log(self) -> None: | STRING |
| LOW | src/textual/demo/widgets.py | 384 | def update_rich_log(self) -> None: | STRING |
| LOW | src/textual/demo/widgets.py | 570 | def update_sparks(self) -> None: | STRING |
| LOW | src/textual/renderables/__init__.py | 1 | __all__ = ["bar", "blank", "digits", "gradient", "sparkline"] | CODE |
| LOW | src/textual/drivers/_input_reader.py | 3 | __all__ = ["InputReader"] | CODE |
| LOW | src/textual/drivers/linux_inline_driver.py | 193 | async def update_size() -> None: | CODE |
| LOW | src/textual/css/styles.py | 1346 | def _update_node(self, node: DOMNode) -> None: | CODE |
| LOW | src/textual/css/stylesheet.py | 211 | def set_variables(self, variables: dict[str, str]) -> None: | CODE |
| 47 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/calculator.py | 151 | except Exception: | CODE |
| LOW | examples/dictionary.py | 45 | except Exception: | CODE |
| LOW | examples/code_browser.py | 74 | except Exception: | CODE |
| LOW | src/textual/screen.py | 561 | except Exception: | CODE |
| LOW | src/textual/screen.py | 1382 | except Exception as error: | CODE |
| LOW | src/textual/worker.py | 375 | except Exception as error: | CODE |
| LOW | src/textual/pilot.py | 488 | except Exception: | CODE |
| LOW | src/textual/message_pump.py | 606 | except Exception as error: | CODE |
| LOW | src/textual/message_pump.py | 646 | except Exception as error: | CODE |
| LOW | src/textual/message_pump.py | 666 | except Exception as error: | CODE |
| LOW | src/textual/message_pump.py | 690 | except Exception as error: | CODE |
| LOW | src/textual/message_pump.py | 703 | except Exception as error: | CODE |
| LOW | src/textual/message_pump.py | 895 | except Exception: | CODE |
| LOW | src/textual/message_pump.py | 910 | except Exception: | CODE |
| LOW | src/textual/message_pump.py | 917 | except Exception as error: | CODE |
| LOW | src/textual/_import_app.py | 66 | except Exception as error: | CODE |
| LOW | src/textual/command.py | 247 | except Exception: | CODE |
| LOW | src/textual/command.py | 315 | except Exception: | CODE |
| MEDIUM | src/textual/widget.py | 3903 | def __rich_repr__(self) -> rich.repr.Result: | CODE |
| LOW | src/textual/widget.py | 1311 | except Exception: | CODE |
| LOW | src/textual/widget.py | 4724 | except Exception as error: | CODE |
| LOW | src/textual/signal.py | 134 | except Exception as error: | CODE |
| LOW | src/textual/style.py | 348 | except Exception: | CODE |
| LOW | src/textual/compose.py | 84 | except Exception as error: | CODE |
| LOW | src/textual/_markup_playground.py | 111 | except Exception: | STRING |
| LOW | src/textual/_markup_playground.py | 131 | except Exception as error: | STRING |
| LOW | src/textual/_markup_playground.py | 143 | except Exception as error: | STRING |
| LOW | src/textual/timer.py | 194 | except Exception as error: | CODE |
| LOW | src/textual/actions.py | 47 | except Exception: | CODE |
| LOW | src/textual/_doc.py | 56 | except Exception as error: | CODE |
| LOW | src/textual/_doc.py | 184 | except Exception: | CODE |
| LOW | src/textual/markup.py | 318 | except Exception as error: | CODE |
| LOW | src/textual/_win_sleep.py | 32 | except Exception: | CODE |
| LOW | src/textual/content.py | 1365 | except Exception: | CODE |
| LOW | src/textual/_xterm_parser.py | 467 | except Exception: | CODE |
| LOW | src/textual/geometry.py | 301 | except Exception: | CODE |
| LOW | src/textual/geometry.py | 707 | except Exception: | CODE |
| LOW | src/textual/app.py | 1755 | except Exception as error: | CODE |
| LOW | src/textual/app.py | 2270 | except Exception: | CODE |
| LOW | src/textual/app.py | 2398 | except Exception as error: | CODE |
| LOW | src/textual/app.py | 3410 | except Exception as error: | CODE |
| LOW | src/textual/app.py | 3451 | except Exception: | CODE |
| LOW | src/textual/app.py | 3515 | except Exception as error: | CODE |
| LOW | src/textual/app.py | 3865 | except Exception as error: | CODE |
| LOW | src/textual/highlight.py | 163 | except Exception: | CODE |
| LOW | src/textual/_debug.py | 25 | except Exception: | CODE |
| LOW | src/textual/lazy.py | 120 | except Exception: | CODE |
| LOW | src/textual/driver.py | 259 | except Exception as error: | CODE |
| LOW | src/textual/_dispatch_key.py | 52 | except Exception: | CODE |
| LOW | src/textual/_work_decorator.py | 137 | except Exception: | CODE |
| LOW | src/textual/demo/home.py | 193 | except Exception: | CODE |
| LOW | src/textual/demo/page.py | 73 | except Exception: | CODE |
| LOW | src/textual/demo/widgets.py | 409 | except Exception: | STRING |
| LOW | src/textual/drivers/_input_reader_windows.py | 29 | except Exception: | CODE |
| LOW | src/textual/drivers/windows_driver.py | 118 | except Exception as error: | CODE |
| LOW | src/textual/drivers/win32.py | 297 | except Exception as error: | CODE |
| LOW | src/textual/drivers/linux_inline_driver.py | 301 | except Exception as error: | CODE |
| LOW | src/textual/drivers/web_driver.py | 208 | except Exception: | CODE |
| LOW | src/textual/drivers/web_driver.py | 283 | except Exception as error: | CODE |
| LOW | src/textual/drivers/linux_driver.py | 371 | except Exception: | CODE |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/utilities/render.py | 23 | CODE | |
| LOW | src/textual/widget.py | 2718 | CODE | |
| LOW | src/textual/widget.py | 2859 | CODE | |
| LOW | src/textual/widget.py | 2926 | CODE | |
| LOW | src/textual/widget.py | 2968 | CODE | |
| LOW | src/textual/widget.py | 3012 | CODE | |
| LOW | src/textual/widget.py | 3080 | CODE | |
| LOW | src/textual/widget.py | 3157 | CODE | |
| LOW | src/textual/widget.py | 3234 | CODE | |
| LOW | src/textual/widget.py | 3312 | CODE | |
| LOW | src/textual/widget.py | 3525 | CODE | |
| LOW | src/textual/widget.py | 3612 | CODE | |
| LOW | src/textual/widget.py | 3721 | CODE | |
| LOW | src/textual/widget.py | 3780 | CODE | |
| LOW | src/textual/containers.py | 273 | CODE | |
| LOW | src/textual/reactive.py | 142 | CODE | |
| LOW | src/textual/design.py | 47 | CODE | |
| LOW | src/textual/_doc.py | 63 | CODE | |
| LOW | src/textual/content.py | 620 | CODE | |
| LOW | src/textual/app.py | 1838 | CODE | |
| LOW | src/textual/scroll_view.py | 126 | CODE | |
| LOW | src/textual/scrollbar.py | 100 | CODE | |
| LOW | src/textual/validation.py | 219 | CODE | |
| LOW | src/textual/widgets/_select.py | 401 | CODE | |
| LOW | src/textual/widgets/_select.py | 450 | CODE | |
| LOW | src/textual/widgets/_static.py | 32 | CODE | |
| LOW | src/textual/widgets/_collapsible.py | 174 | CODE | |
| LOW | src/textual/widgets/_button.py | 331 | CODE | |
| LOW | src/textual/widgets/_progress_bar.py | 238 | CODE | |
| LOW | src/textual/widgets/_rich_log.py | 68 | CODE | |
| LOW | src/textual/widgets/_text_area.py | 584 | CODE | |
| LOW | src/textual/widgets/_text_area.py | 709 | CODE | |
| LOW | src/textual/widgets/_masked_input.py | 449 | CODE | |
| LOW | src/textual/widgets/_data_table.py | 683 | CODE | |
| LOW | src/textual/widgets/_label.py | 49 | CODE | |
| LOW | src/textual/widgets/_input.py | 354 | CODE | |
| LOW | src/textual/widgets/_sparkline.py | 56 | CODE | |
| LOW | src/textual/widgets/_toggle_button.py | 136 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/snapshot_tests/language_snippets.py | 485 | if age >= 18 && isStudent { | CODE |
| HIGH | tests/snapshot_tests/language_snippets.py | 536 | if (age >= 18 && isStudent) { | CODE |
| HIGH | tests/snapshot_tests/language_snippets.py | 747 | if age >= 18 && is_student { | CODE |
| HIGH | tests/snapshot_tests/language_snippets.py | 761 | fruits.push("grape"); | CODE |
| HIGH | tests/snapshot_tests/language_snippets.py | 865 | if (age >= 18 && isStudent) { | CODE |
| HIGH | src/textual/layout.py | 112 | Placements with adjusted region, or same instance if offset is null. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/snapshot_tests/language_snippets.py | 128 | > Lorem ipsum | CODE |
| LOW | tests/snapshot_tests/language_snippets.py | 205 | street = "123 Main St" | CODE |
| LOW | tests/snapshot_tests/language_snippets.py | 211 | name = "John Doe" | CODE |
| LOW | tests/snapshot_tests/language_snippets.py | 398 | "name": "John Doe", | CODE |
| LOW | tests/snapshot_tests/language_snippets.py | 402 | "street": "123 Main St", | CODE |
| LOW⚡ | tests/snapshot_tests/test_snapshots.py | 907 | panel = Panel("lorem ipsum dolor sit amet lorem ipsum dolor sit amet") | CODE |
| LOW⚡ | tests/snapshot_tests/test_snapshots.py | 907 | panel = Panel("lorem ipsum dolor sit amet lorem ipsum dolor sit amet") | CODE |
| LOW | …snapshot_tests/snapshot_apps/data_table_auto_height.py | 4 | LORUM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et do | CODE |
| LOW | …snapshot_tests/snapshot_apps/data_table_auto_height.py | 4 | LORUM_IPSUM = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et do | CODE |
| LOW | docs/blog/posts/release0-6-0.md | 79 | Use this widget in place of custom widgets you have yet to build when designing your UI. The colors are automatically cy | CODE |
| LOW | examples/theme_sandbox.py | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla facilisi. Sed euismod, nunc sit amet aliquam lacinia, nis | CODE |
| LOW | examples/theme_sandbox.py | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla facilisi. Sed euismod, nunc sit amet aliquam lacinia, nis | CODE |
| LOW | src/textual/_styles_cache.py | 50 | ┃ Lorem ipsum dolor ┃◀┐ border | STRING |
| LOW | src/textual/widgets/_placeholder.py | 49 | _LOREM_IPSUM_PLACEHOLDER_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat ac elit sit amet | CODE |
| LOW | src/textual/widgets/_placeholder.py | 49 | _LOREM_IPSUM_PLACEHOLDER_TEXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat ac elit sit amet | CODE |
| LOW | src/textual/widgets/_placeholder.py | 69 | | text | Lorem Ipsum text. | | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_query.py | 171 | # Create a fake app to hold everything else. | COMMENT |
| MEDIUM | src/textual/_doc.py | 17 | # This module defines our "Custom Fences", powered by SuperFences | COMMENT |
| MEDIUM | src/textual/_compositor.py | 1175 | # Create a crop region that surrounds all updates. | COMMENT |
| MEDIUM | src/textual/document/_history.py | 101 | # Create a new batch (creating a "checkpoint"). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_box_model.py | 70 | # Set width to auto-detect | COMMENT |
| LOW | tests/test_box_model.py | 77 | # Set width to 100 vw which should make it the width of the parent | COMMENT |
| LOW | tests/test_box_model.py | 120 | # Set height to 100 vw which should make it the height of the parent | COMMENT |
| LOW | src/textual/_cells.py | 29 | # Check if the click landed on a character within this part. | COMMENT |
| LOW | src/textual/_cells.py | 38 | # Check if the click falls within the boundary of the expanded tab. | COMMENT |
| LOW | src/textual/app.py | 4778 | # Check if we're in an environment that permits this kind of | COMMENT |
| LOW | src/textual/renderables/bar.py | 64 | # Check if we start/end on a number that rounds to a .5 | COMMENT |
| LOW | src/textual/css/stylesheet.py | 673 | # Check if this can / should be animated. It doesn't suffice to check | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_binding_inheritance.py | 401 | async def test_focused_child_widget_with_movement_bindings_no_inherit() -> None: | COMMENT |
| LOW | tests/test_binding_inheritance.py | 461 | COMMENT | |
| LOW | tests/test_binding_inheritance.py | 521 | # | COMMENT |
| LOW | src/textual/drivers/linux_driver.py | 201 | os.kill(os.getpid(), signal.SIGSTOP) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/textual/signal.py | 33 | """A signal that a widget may subscribe to, in order to invoke callbacks when an associated event occurs.""" | STRING |