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 presents the forensic synthetic code analysis of Textualize/textual, a Python project with 36,596 GitHub stars. SynthScan v2.0 examined 175,175 lines of code across 1331 source files, recording 2355 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 18.2 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2355 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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/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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| 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_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 |