Create web-based user interfaces with Python. The nice way.
This report presents the forensic synthetic code analysis of zauberzeug/nicegui, a Python project with 16,016 GitHub stars. SynthScan v2.0 examined 121,543 lines of code across 967 source files, recording 1066 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 10.9 places this repository in the Low 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 1066 distinct pattern matches across 18 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 | main.py | 122 | def _documentation_detail_page(name: str, tree: ui.tree) -> None: | STRING |
| LOW | website/documentation/reference.py | 108 | def _generate_property_signature_description(property_: property | None) -> str: | CODE |
| LOW | website/documentation/reference.py | 124 | def _generate_method_signature_description(method: Callable) -> str: | CODE |
| LOW | website/documentation/reference.py | 152 | def _remove_indentation_from_docstring(text: str) -> str: | CODE |
| LOW | website/documentation/search.py | 46 | def _collect_documentation_parts(*, include_code: bool = False) -> list[dict[str, str]]: | CODE |
| LOW | website/documentation/content/section_security.py | 80 | def component_security_overview_demo(): | STRING |
| LOW | …site/documentation/content/date_input_documentation.py | 28 | def date_input_with_filter_demo(): | STRING |
| LOW | website/documentation/content/section_action_events.py | 245 | # def clear_content_and_show_error(error): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 59 | def adding_rows_preserving_edits(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 87 | def aggrid_with_selectable_rows(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 145 | def aggrid_with_conditional_cell_formatting(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 242 | def aggrid_with_complex_objects(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 260 | def aggrid_with_dynamic_row_height(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 299 | def aggrid_filter_return_values(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 307 | def aggrid_access_api_via_javascript(): | STRING |
| LOW | website/documentation/content/aggrid_documentation.py | 326 | def aggrid_handle_theme_change(): | STRING |
| LOW | website/documentation/content/event_documentation.py | 31 | def emitting_vs_calling_events(): | STRING |
| LOW | website/documentation/content/slider_documentation.py | 23 | def throttle_events_with_leading_and_trailing_options(): | STRING |
| LOW | website/documentation/content/page_documentation.py | 32 | def page_with_path_parameters_demo(): | STRING |
| LOW | …bsite/documentation/content/expansion_documentation.py | 15 | def expansion_with_custom_header(): | STRING |
| LOW | website/documentation/content/tree_documentation.py | 31 | def tree_with_custom_header_and_body(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 40 | def default_column_parameters(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 76 | def table_with_expandable_rows(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 179 | def table_with_drop_down_selection(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 327 | def handle_pagination_changes() -> None: | STRING |
| LOW | website/documentation/content/table_documentation.py | 340 | async def show_filtered_sorted_rows(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 458 | def table_with_masonry_like_grid(): | STRING |
| LOW | website/documentation/content/table_documentation.py | 485 | def slot_templates_with_nicegui_elements(): | STRING |
| LOW | …ite/documentation/content/refreshable_documentation.py | 27 | def refreshable_with_parameters(): | STRING |
| LOW | …umentation/content/section_configuration_deployment.py | 479 | def _documentation_index_table(): | STRING |
| LOW | website/documentation/content/user_documentation.py | 134 | def selecting_options_in_a_select(): | STRING |
| LOW | …/documentation/content/section_audiovisual_elements.py | 25 | def captions_and_overlays_demo(): | STRING |
| LOW | website/documentation/content/markdown_documentation.py | 15 | def markdown_with_indentation(): | STRING |
| LOW | website/documentation/content/markdown_documentation.py | 33 | def markdown_with_code_blocks(): | STRING |
| LOW | website/documentation/content/echart_documentation.py | 98 | def echart_from_pyecharts_demo(): | STRING |
| LOW | …te/documentation/content/section_styling_appearance.py | 242 | def overwrite_tailwind_style_demo(): | STRING |
| LOW | …te/documentation/content/section_styling_appearance.py | 269 | def other_vue_ui_frameworks_demo(): | STRING |
| LOW | website/documentation/content/tooltip_documentation.py | 34 | def tooltip_with_other_content(): | STRING |
| LOW | tests/test_serving_files.py | 25 | def assert_video_file_streaming(path: str) -> None: | CODE |
| LOW | tests/test_serving_files.py | 38 | def test_media_files_can_be_streamed(screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 49 | def test_media_files_against_path_traversal(screen: Screen, secret_file): | CODE |
| LOW | tests/test_serving_files.py | 64 | def test_adding_single_media_file(screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 89 | def test_malicious_chunk_size_is_clamped(screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 107 | def test_get_from_static_files_dir(url_path: str, screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 135 | def test_adding_single_static_file(screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 149 | def test_auto_serving_file_from_image_source(screen: Screen): | CODE |
| LOW | tests/test_serving_files.py | 165 | def test_auto_serving_file_from_video_source(screen: Screen): | STRING |
| LOW | tests/test_serving_files.py | 176 | def test_mimetypes_of_static_files(screen: Screen): | STRING |
| LOW | tests/test_serving_files.py | 196 | def test_cache_control_header_of_static_files(screen: Screen): | STRING |
| LOW | tests/test_skip_link.py | 25 | def test_skip_link_skips_to_offscreen_content(screen: Screen): | STRING |
| LOW | tests/test_skip_link.py | 42 | def test_skip_link_with_custom_text(screen: Screen): | STRING |
| LOW | tests/test_skip_link.py | 51 | def test_skip_link_with_context_manager_replaces_text(screen: Screen): | STRING |
| LOW | tests/test_skip_link.py | 73 | def test_link_is_deleted_with_calling_context(screen: Screen): | STRING |
| LOW | tests/test_vbuild.py | 52 | def test_template_with_scoped_style(): | STRING |
| LOW | tests/test_vbuild.py | 71 | def test_scoped_style_applies_to_root_element(): | STRING |
| LOW | tests/test_vbuild.py | 106 | def test_scoped_style_with_at_rules(): | STRING |
| LOW | tests/test_vbuild.py | 163 | def test_scoped_style_with_nested_at_rules(): | STRING |
| LOW | tests/test_vbuild.py | 184 | def test_scoped_style_with_pseudo_elements(): | STRING |
| LOW | tests/test_vbuild.py | 207 | def test_scoped_style_with_braces_in_content(): | STRING |
| LOW | tests/test_vbuild.py | 226 | def test_scoped_style_ignores_comments(): | STRING |
| 374 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/__init__.py | 1 | CODE | |
| LOW | website/__init__.py | 1 | CODE | |
| LOW | website/__init__.py | 1 | CODE | |
| LOW | website/__init__.py | 1 | CODE | |
| LOW | website/__init__.py | 1 | CODE | |
| LOW | website/examples.py | 1 | CODE | |
| LOW | website/documentation/__init__.py | 1 | CODE | |
| LOW | website/documentation/__init__.py | 1 | CODE | |
| LOW | website/documentation/__init__.py | 1 | CODE | |
| LOW | website/documentation/__init__.py | 2 | CODE | |
| LOW | website/documentation/__init__.py | 3 | CODE | |
| LOW | website/documentation/__init__.py | 4 | CODE | |
| LOW | website/documentation/__init__.py | 5 | CODE | |
| LOW | website/documentation/__init__.py | 6 | CODE | |
| LOW | website/documentation/__init__.py | 6 | CODE | |
| LOW | website/documentation/__init__.py | 6 | CODE | |
| LOW | website/documentation/content/section_pages_routing.py | 89 | CODE | |
| LOW | website/documentation/content/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/__init__.py | 2 | CODE | |
| LOW | …te/documentation/content/section_styling_appearance.py | 270 | CODE | |
| LOW | website/documentation/content/run_documentation.py | 76 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/documentation/content/doc/__init__.py | 1 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | website/components/__init__.py | 3 | CODE | |
| LOW | tests/test_speculative_loading.py | 1 | CODE | |
| LOW | tests/test_user_simulation.py | 857 | CODE | |
| LOW | tests/test_json.py | 15 | CODE | |
| LOW | nicegui/element_filter.py | 1 | CODE | |
| LOW | nicegui/event.py | 1 | CODE | |
| LOW | nicegui/server.py | 1 | CODE | |
| LOW | nicegui/style.py | 9 | CODE | |
| LOW | nicegui/ui.py | 297 | CODE | |
| LOW | nicegui/ui.py | 298 | CODE | |
| LOW | nicegui/ui.py | 299 | CODE | |
| LOW | nicegui/ui.py | 300 | CODE | |
| LOW | nicegui/ui.py | 301 | CODE | |
| LOW | nicegui/ui.py | 302 | CODE | |
| LOW | nicegui/ui.py | 303 | CODE | |
| LOW | nicegui/ui.py | 304 | CODE | |
| LOW | nicegui/ui.py | 305 | CODE | |
| 282 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | website/search.py | 55 | if (e.key === '/' || (e.key === 'k' && (e.ctrlKey || e.metaKey))) { | CODE |
| HIGH | website/documentation/content/navigate_documentation.py | 33 | ui.button('Push URL', on_click=lambda: ui.navigate.history.push('/a')) | STRING |
| HIGH | website/documentation/content/keyboard_documentation.py | 43 | if (e.key === 'a' && (e.ctrlKey || e.metaKey) && e.action === 'keydown') { | CODE |
| HIGH | …/documentation/content/element_filter_documentation.py | 79 | log.push(f'{time.strftime("%H:%M:%S")}') | STRING |
| HIGH | website/documentation/content/log_documentation.py | 11 | ui.button('Log time', on_click=lambda: log.push(datetime.now().strftime('%X.%f')[:-5])) | CODE |
| HIGH | website/documentation/content/log_documentation.py | 35 | self.element.push(msg) | STRING |
| HIGH⚡ | website/documentation/content/log_documentation.py | 65 | ui.button('Normal', on_click=lambda: log.push('Text')) | STRING |
| HIGH⚡ | website/documentation/content/log_documentation.py | 66 | ui.button('Debug', on_click=lambda: log.push('Debug', classes='text-grey')) | STRING |
| HIGH⚡ | website/documentation/content/log_documentation.py | 67 | ui.button('Info', on_click=lambda: log.push('Info', classes='text-blue')) | STRING |
| HIGH⚡ | website/documentation/content/log_documentation.py | 68 | ui.button('Warning', on_click=lambda: log.push('Warning', classes='text-orange')) | STRING |
| HIGH⚡ | website/documentation/content/log_documentation.py | 69 | ui.button('Error', on_click=lambda: log.push('Error', classes='text-red')) | STRING |
| HIGH | …bsite/documentation/content/line_plot_documentation.py | 19 | line_plot.push([now], [[y1], [y2]], y_limits=(-1.5, 1.5)) | CODE |
| HIGH⚡ | tests/test_skip_link.py | 13 | return rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && | CODE |
| HIGH⚡ | tests/test_skip_link.py | 13 | return rect.top >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && | CODE |
| HIGH⚡ | tests/test_skip_link.py | 14 | rect.left >= 0 && rect.right <= (window.innerWidth || document.documentElement.clientWidth); | CODE |
| HIGH⚡ | tests/test_skip_link.py | 14 | rect.left >= 0 && rect.right <= (window.innerWidth || document.documentElement.clientWidth); | CODE |
| HIGH⚡ | tests/test_navigate.py | 78 | 'window.open = (url, target) => window.__open_calls.push([url, target]);') | CODE |
| HIGH⚡ | tests/test_navigate.py | 87 | ui.button('Push', on_click=lambda: ui.navigate.history.push('/");console.log("XSS");//')) | CODE |
| HIGH⚡ | tests/test_log.py | 12 | log.push('A') | CODE |
| HIGH⚡ | tests/test_log.py | 13 | log.push('B') | CODE |
| HIGH⚡ | tests/test_log.py | 14 | log.push('C') | CODE |
| HIGH⚡ | tests/test_log.py | 15 | log.push('D') | CODE |
| HIGH⚡ | tests/test_log.py | 32 | log.push('A') | CODE |
| HIGH⚡ | tests/test_log.py | 33 | log.push('B') | CODE |
| HIGH⚡ | tests/test_log.py | 34 | log.push('C\nD') | CODE |
| HIGH⚡ | tests/test_log.py | 63 | log.push('50%') | CODE |
| HIGH⚡ | tests/test_log.py | 64 | ui.button('push', on_click=lambda: log.push('100%')) | CODE |
| HIGH⚡ | tests/test_log.py | 81 | log.push('Log line', classes='text-green', style='margin: 2rem', props='my-prop=B') | CODE |
| HIGH | nicegui/native/native_mode.py | 96 | if (e.dataTransfer && e.dataTransfer.types.indexOf("Files") >= 0) e.preventDefault(); | CODE |
| HIGH | nicegui/testing/screen.py | 177 | js = 'return arguments[0].naturalWidth > 0 && arguments[0].naturalHeight > 0' | CODE |
| HIGH⚡ | nicegui/testing/screen.py | 267 | let lastId = window.nextMessageId || 0; | CODE |
| HIGH⚡ | nicegui/testing/screen.py | 270 | const currentId = window.nextMessageId || 0; | CODE |
| HIGH⚡ | nicegui/testing/screen.py | 275 | if (Date.now() - stableSince >= 100 || Date.now() >= deadline) {{ | CODE |
| HIGH | nicegui/elements/skip_link.py | 57 | if (el === null) return; | CODE |
| HIGH | nicegui/elements/aggrid/aggrid.py | 309 | getElement({self.id}).api.{API_METHODS[method]}(node => rowData.push(node.data)); | CODE |
| HIGH | examples/pyserial/main.py | 19 | log.push(line.decode()) | CODE |
| HIGH | examples/zeromq/main.py | 22 | number_received.subscribe(lambda number: line_plot.push([datetime.now()], [[number]])) | CODE |
| HIGH | examples/descope_auth/user.py | 87 | token = await ui.run_javascript('return sessionToken && !sdk.isJwtExpired(sessionToken) ? sessionToken : null;') | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | website/documentation/content/input_documentation.py | 0 | the `clearable` prop from [quasar](https://quasar.dev/) adds a button to the input that clears the text. | STRING |
| HIGH | website/documentation/content/textarea_documentation.py | 0 | the `clearable` prop from [quasar](https://quasar.dev/) adds a button to the input that clears the text. | STRING |
| HIGH | website/documentation/content/number_documentation.py | 0 | the `clearable` prop from [quasar](https://quasar.dev/) adds a button to the input that clears the text. | STRING |
| HIGH | nicegui/element_filter.py | 0 | apply, remove, toggle, or replace html classes. this allows modifying the look of the element or its layout using `tailw | STRING |
| HIGH | nicegui/classes.py | 0 | apply, remove, toggle, or replace html classes. this allows modifying the look of the element or its layout using `tailw | STRING |
| HIGH | nicegui/elements/query.py | 0 | apply, remove, toggle, or replace html classes. this allows modifying the look of the element or its layout using `tailw | STRING |
| HIGH | nicegui/element_filter.py | 0 | apply, remove, or replace css definitions. removing or replacing styles can be helpful if the predefined style is not de | STRING |
| HIGH | nicegui/style.py | 0 | apply, remove, or replace css definitions. removing or replacing styles can be helpful if the predefined style is not de | STRING |
| HIGH | nicegui/elements/query.py | 0 | apply, remove, or replace css definitions. removing or replacing styles can be helpful if the predefined style is not de | STRING |
| HIGH | nicegui/element_filter.py | 0 | add or remove props. this allows modifying the look of the element or its layout using `quasar <https://quasar.dev/>`_ p | STRING |
| HIGH | nicegui/props.py | 0 | add or remove props. this allows modifying the look of the element or its layout using `quasar <https://quasar.dev/>`_ p | STRING |
| HIGH | nicegui/elements/query.py | 0 | add or remove props. this allows modifying the look of the element or its layout using `quasar <https://quasar.dev/>`_ p | STRING |
| HIGH | nicegui/elements/tree.py | 0 | add a callback to be invoked when the selection state changes. | STRING |
| HIGH | nicegui/elements/table.py | 0 | add a callback to be invoked when the selection state changes. | STRING |
| HIGH | nicegui/elements/mixins/selectable_element.py | 0 | add a callback to be invoked when the selection state changes. | STRING |
| HIGH | nicegui/elements/mixins/icon_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/value_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/filter_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/source_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/label_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/text_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/content_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/visibility.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/disableable_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/selectable_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/name_element.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| HIGH | nicegui/elements/mixins/color_elements.py | 0 | bind the text color of this element to the target object's target_name property. the binding works both ways, from this | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_reconnect.py | 35 | screen.selenium.execute_script('window.socket.io.engine.transport.onClose("transport close");') # drop connection | CODE |
| CRITICAL | tests/test_reconnect.py | 53 | screen.selenium.execute_script('window.socket.io.engine.transport.onClose("transport close");') | CODE |
| CRITICAL | nicegui/elements/drawer.py | 57 | page_container_index = self.client.layout.default_slot.children.index(self.client.page_container) | CODE |
| CRITICAL | nicegui/static/unocss/preset-mini.global.js | 10 | `?i=!0:u!=="\r"&&i&&(i=!1,a===l.start||(this._splitChunk(l,a),l=l.next),l.prependRight(t))}a+=1}a=l.end,l=l.next}return | CODE |
| CRITICAL | nicegui/static/unocss/preset-wind4.global.js | 10 | `?i=!0:f!=="\r"&&i&&(i=!1,s===c.start||(this._splitChunk(c,s),c=c.next),c.prependRight(t))}s+=1}s=c.end,c=c.next}return | CODE |
| CRITICAL | nicegui/static/unocss/preset-wind3.global.js | 10 | `?i=!0:u!=="\r"&&i&&(i=!1,s===l.start||(this._splitChunk(l,s),l=l.next),l.prependRight(e))}s+=1}s=l.end,l=l.next}return | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deploy.py | 66 | except Exception: | CODE |
| LOW | website/github_stars.py | 21 | except Exception: | CODE |
| MEDIUM | website/github_stars.py | 14 | def _fetch() -> None: | CODE |
| LOW | website/documentation/content/section_action_events.py | 262 | except Exception as e: # HIDE | STRING |
| LOW | website/documentation/content/event_documentation.py | 49 | except Exception as e: | STRING |
| LOW | website/documentation/content/log_documentation.py | 36 | except Exception: | STRING |
| LOW | tests/test_event.py | 112 | except Exception: | CODE |
| MEDIUM | tests/test_event.py | 109 | def click(): | CODE |
| LOW | nicegui/llms.md | 1288 | except Exception as e: | CODE |
| MEDIUM | nicegui/llms.md | 1285 | def safe_task(): | CODE |
| LOW | nicegui/run.py | 56 | except Exception as e: | CODE |
| LOW | nicegui/event.py | 142 | except Exception as e: | CODE |
| LOW | nicegui/background_tasks.py | 155 | except Exception as e: | CODE |
| LOW | nicegui/background_tasks.py | 175 | except Exception: | CODE |
| LOW⚡ | nicegui/events.py | 477 | except Exception as e: | CODE |
| LOW⚡ | nicegui/events.py | 486 | except Exception as e: | CODE |
| LOW | nicegui/timer.py | 101 | except Exception as e: | CODE |
| LOW | nicegui/timer.py | 114 | except Exception as e: | CODE |
| LOW | nicegui/client.py | 424 | except Exception as e: | CODE |
| LOW | nicegui/client.py | 497 | except Exception: | CODE |
| LOW | nicegui/page.py | 136 | except Exception as e: | CODE |
| LOW | nicegui/page.py | 172 | except Exception as e: | CODE |
| LOW | nicegui/page.py | 180 | except Exception as e: | CODE |
| LOW | nicegui/slot.py | 74 | except Exception: | CODE |
| LOW | nicegui/core.py | 55 | except Exception: | CODE |
| LOW | nicegui/air.py | 114 | except Exception: | CODE |
| LOW | nicegui/air.py | 226 | except Exception: | CODE |
| LOW | nicegui/outbox.py | 130 | except Exception as e: | CODE |
| LOW | nicegui/outbox.py | 134 | except Exception as e: | CODE |
| LOW | nicegui/app/app.py | 110 | except Exception as e: | CODE |
| LOW | nicegui/native/native.py | 151 | except Exception: | CODE |
| LOW | nicegui/native/native_mode.py | 125 | except Exception: | STRING |
| LOW | nicegui/native/native_mode.py | 155 | except Exception: | STRING |
| LOW | nicegui/native/native_mode.py | 213 | except Exception: # pylint: disable=broad-except | STRING |
| LOW | nicegui/testing/screen.py | 63 | except Exception as e: | CODE |
| LOW | nicegui/testing/screen.py | 93 | except Exception as e: | CODE |
| LOW | nicegui/testing/screen_plugin.py | 90 | except Exception: | CODE |
| LOW | nicegui/elements/sub_pages.py | 112 | except Exception as e: | CODE |
| LOW | nicegui/elements/sub_pages.py | 124 | except Exception as e: | CODE |
| LOW | nicegui/persistence/redis_persistent_dict.py | 45 | except Exception: | CODE |
| LOW | nicegui/persistence/redis_persistent_dict.py | 55 | except Exception: | CODE |
| LOW | nicegui/persistence/redis_persistent_dict.py | 72 | except Exception: | CODE |
| MEDIUM | nicegui/persistence/redis_persistent_dict.py | 59 | def listen(): | CODE |
| LOW | nicegui/persistence/file_persistent_dict.py | 27 | except Exception: | CODE |
| LOW | nicegui/persistence/file_persistent_dict.py | 37 | except Exception: | CODE |
| MEDIUM | nicegui/persistence/file_persistent_dict.py | 19 | def initialize(self) -> None: | CODE |
| MEDIUM | nicegui/persistence/file_persistent_dict.py | 30 | def initialize_sync(self) -> None: | CODE |
| LOW | nicegui/helpers/network.py | 14 | except Exception: | CODE |
| LOW | examples/google_one_tap_auth/main.py | 62 | except Exception: | STRING |
| LOW | examples/google_oauth2/main.py | 65 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | main.py | 83 | def update_tree() -> None: | CODE |
| LOW | website/__init__.py | 3 | __all__ = [ | CODE |
| LOW | website/search.py | 89 | def _update_highlight(self) -> None: | STRING |
| LOW | website/documentation/__init__.py | 8 | __all__ = [ | CODE |
| LOW | website/documentation/content/__init__.py | 4 | __all__ = [ | CODE |
| LOW | …bsite/documentation/content/line_plot_documentation.py | 14 | def update_line_plot() -> None: | CODE |
| LOW | …te/documentation/content/context_menu_documentation.py | 21 | def update_context_menu() -> None: | STRING |
| LOW | …te/documentation/content/context_menu_documentation.py | 24 | def update_menu(e: events.MouseEventArguments) -> None: | STRING |
| LOW | website/documentation/content/query_documentation.py | 8 | def set_background(color: str) -> None: | CODE |
| LOW | website/documentation/content/doc/__init__.py | 16 | __all__ = [ | CODE |
| LOW | website/components/__init__.py | 16 | __all__ = [ | CODE |
| LOW | nicegui/ui.py | 152 | __all__ = [ | CODE |
| LOW | nicegui/__init__.py | 12 | __all__ = [ | CODE |
| LOW | nicegui/props.py | 67 | def set_optional(self, key: str, value: Any) -> None: | STRING |
| LOW | nicegui/props.py | 74 | def set_bool(self, key: str, value: Any) -> None: | STRING |
| LOW | nicegui/binding.py | 49 | def _set_attribute(obj: object | Mapping, name: tuple[str, ...], value: Any) -> None: | CODE |
| LOW | nicegui/outbox.py | 58 | def _set_enqueue_event(self) -> None: | CODE |
| LOW | nicegui/app/__init__.py | 4 | __all__ = [ | CODE |
| LOW | nicegui/native/__init__.py | 5 | __all__ = [ | CODE |
| LOW | nicegui/native/native.py | 47 | def set_always_on_top(self, on_top: bool) -> None: | CODE |
| LOW | nicegui/native/native.py | 68 | def set_title(self, title: str) -> None: | CODE |
| LOW | nicegui/native/native.py | 86 | def set_window_size(self, width: int, height: int) -> None: | CODE |
| LOW | nicegui/testing/__init__.py | 13 | __all__ = [ | CODE |
| LOW | nicegui/elements/interactive_image.py | 105 | def _set_props(self, source: str | Path | PIL_Image) -> None: | CODE |
| LOW | nicegui/elements/interactive_image.py | 162 | def _set_props(self, source: str | Path | PIL_Image) -> None: | CODE |
| LOW | nicegui/elements/tree.py | 63 | def update_prop(name: str, value: Any) -> None: | CODE |
| LOW | nicegui/elements/code.py | 48 | def _update_copy_button(self) -> None: | CODE |
| LOW | nicegui/elements/sub_pages.py | 148 | def _set_match(self, match: RouteMatch | None) -> None: | CODE |
| LOW | nicegui/elements/table.py | 437 | def update_rows(self, rows: list[dict], *, clear_selection: bool = True) -> None: | STRING |
| LOW | nicegui/elements/color_input.py | 62 | def _update_preview(self) -> None: | CODE |
| LOW | nicegui/elements/image.py | 35 | def _set_props(self, source: str | Path | PIL_Image) -> None: | CODE |
| LOW⚡ | nicegui/elements/choice_element.py | 40 | def _update_values_and_labels(self) -> None: | CODE |
| LOW⚡ | nicegui/elements/choice_element.py | 44 | def _update_options(self) -> None: | CODE |
| LOW | nicegui/elements/codemirror/__init__.py | 6 | __all__ = ['CodeMirror'] | CODE |
| LOW | nicegui/elements/codemirror/codemirror.py | 167 | def _update_codepoints(self) -> None: | CODE |
| LOW | nicegui/elements/xterm/__init__.py | 6 | __all__ = ['Xterm'] | CODE |
| LOW | nicegui/elements/json_editor/__init__.py | 6 | __all__ = ['JsonEditor'] | CODE |
| LOW | nicegui/elements/echart/__init__.py | 6 | __all__ = ['EChart'] | CODE |
| LOW | nicegui/elements/mixins/source_element.py | 109 | def _set_props(self, source: Any) -> None: | CODE |
| LOW | nicegui/elements/anywidget/__init__.py | 3 | __all__ = ['AnyWidget'] | CODE |
| LOW | nicegui/elements/plotly/__init__.py | 6 | __all__ = ['Plotly'] | CODE |
| LOW | nicegui/elements/leaflet/__init__.py | 6 | __all__ = ['Leaflet'] | CODE |
| LOW | nicegui/elements/aggrid/aggrid.py | 326 | def set_module_source(url: str) -> None: | STRING |
| LOW | nicegui/elements/aggrid/__init__.py | 6 | __all__ = ['AgGrid'] | CODE |
| LOW | nicegui/elements/mermaid/__init__.py | 6 | __all__ = ['Mermaid'] | CODE |
| LOW | nicegui/elements/joystick/__init__.py | 6 | __all__ = ['Joystick'] | CODE |
| LOW | nicegui/elements/scene/__init__.py | 12 | __all__ = ['Object3D', 'Scene', 'SceneCamera', 'SceneObject', 'SceneView'] | CODE |
| LOW | nicegui/elements/sortable/__init__.py | 3 | __all__ = ['Sortable'] | CODE |
| LOW | nicegui/json/__init__.py | 17 | __all__ = [ | CODE |
| LOW | nicegui/persistence/__init__.py | 6 | __all__ = [ | CODE |
| LOW | nicegui/functions/refreshable.py | 170 | def set_value(new_value: Any) -> None: | CODE |
| LOW | nicegui/helpers/__init__.py | 17 | __all__ = [ | CODE |
| LOW | examples/ros2/ros2_ws/src/simulator/simulator/node.py | 24 | def update_pose(self) -> None: | CODE |
| LOW | examples/local_file_picker/local_file_picker.py | 50 | def update_grid(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/header.py | 67 | CODE | |
| LOW | website/search.py | 61 | CODE | |
| LOW | website/search.py | 62 | CODE | |
| LOW | website/documentation/rendering.py | 10 | CODE | |
| LOW | website/documentation/reference.py | 20 | CODE | |
| LOW | website/documentation/reference.py | 58 | CODE | |
| LOW | website/documentation/windows.py | 16 | CODE | |
| LOW | website/documentation/windows.py | 43 | CODE | |
| LOW | website/documentation/content/section_foundations.py | 151 | CODE | |
| LOW | website/documentation/content/menu_documentation.py | 35 | CODE | |
| LOW | website/documentation/content/keyboard_documentation.py | 7 | CODE | |
| LOW | website/documentation/content/keyboard_documentation.py | 10 | CODE | |
| LOW | website/documentation/content/stepper_documentation.py | 28 | CODE | |
| LOW | website/documentation/content/stepper_documentation.py | 29 | CODE | |
| LOW | …site/documentation/content/slide_item_documentation.py | 20 | CODE | |
| LOW | website/documentation/content/date_documentation.py | 25 | CODE | |
| LOW | website/documentation/content/sortable_documentation.py | 30 | CODE | |
| LOW | website/documentation/content/time_documentation.py | 25 | CODE | |
| LOW | …te/documentation/content/section_styling_appearance.py | 43 | CODE | |
| LOW | …te/documentation/content/section_styling_appearance.py | 56 | CODE | |
| LOW | website/documentation/content/tabs_documentation.py | 64 | CODE | |
| LOW | website/components/sponsors_section.py | 14 | CODE | |
| LOW | website/components/footer_section.py | 9 | CODE | |
| LOW | website/components/examples_section.py | 10 | CODE | |
| LOW | website/components/demos_section.py | 11 | CODE | |
| LOW | tests/test_keep_alive.py | 92 | CODE | |
| LOW | tests/test_keep_alive.py | 94 | CODE | |
| LOW | tests/test_select.py | 112 | CODE | |
| LOW | tests/test_endpoint_docs.py | 9 | CODE | |
| LOW | nicegui/element_filter.py | 106 | CODE | |
| LOW | nicegui/timer.py | 84 | CODE | |
| LOW | nicegui/page_arguments.py | 68 | CODE | |
| LOW | nicegui/page.py | 123 | CODE | |
| LOW | nicegui/page.py | 139 | CODE | |
| LOW | nicegui/outbox.py | 81 | CODE | |
| LOW | nicegui/native/native_mode.py | 116 | CODE | |
| LOW | nicegui/native/native_mode.py | 128 | CODE | |
| LOW | nicegui/testing/screen.py | 138 | CODE | |
| LOW | nicegui/testing/screen.py | 209 | CODE | |
| LOW | nicegui/testing/user_interaction.py | 31 | CODE | |
| LOW | nicegui/testing/user_interaction.py | 58 | CODE | |
| LOW | nicegui/testing/user_interaction.py | 77 | CODE | |
| LOW | nicegui/testing/user_simulation.py | 18 | CODE | |
| LOW | nicegui/testing/screen_plugin.py | 101 | CODE | |
| LOW | nicegui/testing/general.py | 34 | CODE | |
| LOW | nicegui/elements/select.py | 95 | CODE | |
| LOW | nicegui/elements/select.py | 148 | CODE | |
| LOW | nicegui/elements/echart/echart.py | 111 | CODE | |
| LOW | examples/ros2/ros2_ws/src/gui/gui/node.py | 15 | CODE | |
| LOW | examples/ros2/ros2_ws/src/gui/gui/node.py | 24 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | nicegui/page.py | 25 | CODE | |
| LOW | nicegui/ui_run.py | 50 | CODE | |
| LOW | nicegui/ui_run_with.py | 22 | CODE | |
| LOW | nicegui/app/app.py | 332 | CODE | |
| LOW | nicegui/elements/timeline.py | 34 | CODE | |
| LOW | nicegui/elements/upload.py | 21 | CODE | |
| LOW | nicegui/elements/skeleton.py | 10 | CODE | |
| LOW | nicegui/elements/chip.py | 17 | CODE | |
| LOW | nicegui/elements/notification.py | 32 | CODE | |
| LOW | nicegui/elements/rating.py | 10 | CODE | |
| LOW | nicegui/elements/number.py | 14 | CODE | |
| LOW | nicegui/elements/chat_message.py | 13 | CODE | |
| LOW | nicegui/elements/button_dropdown.py | 15 | CODE | |
| LOW | nicegui/elements/input.py | 18 | CODE | |
| LOW | nicegui/elements/knob.py | 12 | CODE | |
| LOW | nicegui/elements/table.py | 30 | CODE | |
| LOW | nicegui/elements/select.py | 17 | CODE | |
| LOW | nicegui/elements/colors.py | 9 | CODE | |
| LOW | nicegui/elements/codemirror/codemirror.py | 24 | CODE | |
| LOW | nicegui/elements/scene/scene.py | 63 | CODE | |
| LOW | nicegui/elements/scene/scene.py | 231 | CODE | |
| LOW | nicegui/elements/scene/scene_view.py | 103 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/documentation/content/notify_documentation.py | 27 | 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. \n' | STRING |
| LOW | website/documentation/content/notify_documentation.py | 27 | 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. \n' | STRING |
| LOW | website/documentation/content/card_documentation.py | 11 | ui.label('Lorem ipsum dolor sit amet, consectetur adipiscing elit, ...') | CODE |
| LOW | website/documentation/content/card_documentation.py | 11 | ui.label('Lorem ipsum dolor sit amet, consectetur adipiscing elit, ...') | CODE |
| LOW | …te/documentation/content/section_binding_properties.py | 50 | i = ui.input(value='Lorem ipsum') | STRING |
| LOW | website/documentation/content/link_documentation.py | 20 | 'A: Lorem ipsum dolor sit amet, consectetur adipiscing elit, ' | STRING |
| LOW | website/documentation/content/link_documentation.py | 20 | 'A: Lorem ipsum dolor sit amet, consectetur adipiscing elit, ' | STRING |
| LOW | tests/test_input.py | 15 | ui.input('Your name', value='John Doe') | CODE |
| LOW | tests/test_input.py | 21 | assert element.get_attribute('value') == 'John Doe' | CODE |
| LOW⚡ | tests/test_sub_pages_match_path.py | 104 | assert ui.sub_pages._match_path('/user/{id}', '/user/user@example.com') == {'id': 'user@example.com'} | CODE |
| LOW | nicegui/element_filter.py | 123 | element.props.get('placeholder'), | CODE |
| LOW | nicegui/elements/number.py | 55 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/elements/time_input.py | 34 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/elements/date_input.py | 37 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/elements/input.py | 63 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/elements/editor.py | 29 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/elements/color_input.py | 42 | self._props.set_optional('placeholder', placeholder) | CODE |
| LOW | nicegui/static/tailwindcss.min.js | 10 | `,r){o+=c.length;let m=o;o+=2+a.value.length+2;let g=o;a.dst=[e,m,g],o+=1}}else if(a.kind==="context"||a.kind==="at-root | CODE |
| LOW | nicegui/static/tailwindcss.min.js | 13 | `);console.warn(k)}}),i.value=Z(s)}),o.utilities.functional(r.slice(0,-2),i=>{let s=structuredClone(t),a=i.value,d=i.mod | CODE |
| LOW | nicegui/static/unocss/preset-mini.global.js | 10 | `?i=!0:u!=="\r"&&i&&(i=!1,a===l.start||(this._splitChunk(l,a),l=l.next),l.prependRight(t))}a+=1}a=l.end,l=l.next}return | CODE |
| LOW | nicegui/static/unocss/preset-wind4.global.js | 10 | `?i=!0:f!=="\r"&&i&&(i=!1,s===c.start||(this._splitChunk(c,s),c=c.next),c.prependRight(t))}s+=1}s=c.end,c=c.next}return | CODE |
| LOW | nicegui/static/unocss/preset-wind3.global.js | 10 | `?i=!0:u!=="\r"&&i&&(i=!1,s===l.start||(this._splitChunk(l,s),l=l.next),l.prependRight(e))}s+=1}s=l.end,l=l.next}return | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | nicegui/elements/mermaid/package-lock.json | 1817 | "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", | CODE |
| MEDIUM | nicegui/static/quasar.umd.prod.js | 7 | (()=>{var sv=Object.defineProperty;var jr=(e,t)=>{for(var o in t)sv(e,o,{get:t[o],enumerable:!0})};var{h:i,ref:T,compute | CODE |
| MEDIUM | nicegui/static/quasar.umd.prod.js | 7 | (()=>{var sv=Object.defineProperty;var jr=(e,t)=>{for(var o in t)sv(e,o,{get:t[o],enumerable:!0})};var{h:i,ref:T,compute | CODE |
| MEDIUM | examples/fullcalendar/lib/index.global.min.js | 6 | var FullCalendar=function(e){"use strict";var t,n,r,i,s,o,a,l,c,d={},u=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-entrypoint.sh | 7 | # Check if the provided PUID and PGID are non-empty, numeric values; otherwise, assign default values. | COMMENT |
| LOW | docker-entrypoint.sh | 14 | # Check if the specified group with PGID exists, if not, create it. | COMMENT |
| LOW | .github/workflows/_verify.yml | 16 | # Check if the container is still running | COMMENT |
| LOW | .github/workflows/_verify.yml | 23 | # Check if the "Error" string is present in the container output | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | examples/progress/main.py | 28 | # Create a queue to communicate with the heavy computation process | COMMENT |
| MEDIUM | examples/progress/main.py | 33 | # Create the UI | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ite/documentation/content/page_layout_documentation.py | 11 | [`ui.right_drawer`](page_layout#reference_for_ui_right_drawer) you can add additional layout elements to a page. | CODE |
| MEDIUM | …ite/documentation/content/page_layout_documentation.py | 22 | With [`ui.page_scroller`](page_layout#reference_for_ui_page_scroller) you can add a scroll-to-top button to the page | CODE |
| LOW | examples/fullcalendar/lib/index.global.min.js | 6 | var FullCalendar=function(e){"use strict";var t,n,r,i,s,o,a,l,c,d={},u=[],h=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/documentation/content/page_documentation.py | 101 | See our [modularization example](https://github.com/zauberzeug/nicegui/blob/main/examples/modularization/api_router_ | COMMENT |
| LOW | website/documentation/content/page_documentation.py | 121 | # | COMMENT |
| LOW | …bsite/documentation/content/sub_pages_documentation.py | 321 | # ui.sub_pages({ | COMMENT |
| LOW | website/documentation/content/run_documentation.py | 81 | # | COMMENT |
| LOW | .claude/skills/release-notes/release-notes.sh | 1 | #!/usr/bin/env bash | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .claude/skills/release-notes/release-notes.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | examples/ros2/ros2_ws/src/gui/gui/node.py | 68 | # NOTE: This function is defined as the ROS entry point in setup.py, but it's empty to enable NiceGUI auto-reloading | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_awaitable_response.py | 13 | def do_something() -> AwaitableResponse: | CODE |