Streamlit — A faster way to build and share data apps.
This report summarizes scanner evidence for streamlit/streamlit, a Python project with 45,931 GitHub stars. SynthScan examined 727,237 lines of code across 2524 source files, recording 13238 pattern matches distributed across 26 syntactic categories. The legacy adjusted pattern signal is 22.9 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 10746 finding(s).
Are imports declared and package/API names verified? 938 finding(s).
Are wrappers, guards, and repeated structures necessary? 10445 finding(s).
Which changes need focused human review? 13238 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 13238 distinct pattern matches across 26 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/app/src/App.test.tsx | 426 | function getMockConnectionManagerProp( | CODE |
| LOW | frontend/app/src/App.test.tsx | 5328 | function prepareHostCommunicationManager( | CODE |
| LOW | frontend/app/src/util/hostConfigHelpers.ts | 82 | export function reconcileHostConfigValues( | CODE |
| LOW | frontend/app/src/components/Sidebar/utils.ts | 129 | export function getSidebarResizeHandleHoverBorderColor( | CODE |
| LOW | frontend/app/src/components/Sidebar/utils.ts | 143 | export function getSidebarResizeHandleBackgroundImage( | CODE |
| LOW | …d/app/src/components/ToolbarActions/ToolbarActions.tsx | 47 | export function getToolbarActionAccessibleName( | CODE |
| LOW | frontend/app/src/components/Navigation/TopNav.test.tsx | 51 | function getNavigationContextOutput( | CODE |
| LOW | frontend/app/src/components/Navigation/utils.ts | 85 | export function processNavigationStructure( | CODE |
| LOW | …tend/app/src/components/Navigation/SidebarNav.test.tsx | 148 | function getSidebarConfigContextOutput( | CODE |
| LOW | …tend/app/src/components/Navigation/SidebarNav.test.tsx | 161 | function getNavigationContextOutput( | CODE |
| LOW | frontend/app/src/components/AppView/AppView.tsx | 80 | function containsAutoPositionedChatInput(node: AppNode): boolean { | CODE |
| LOW | frontend/app/src/components/AppView/AppView.test.tsx | 54 | function getSidebarConfigContextOutput( | CODE |
| LOW | frontend/app/src/components/AppView/AppView.test.tsx | 67 | function getNavigationContextOutput( | CODE |
| LOW | …end/app/src/components/SkillsNudgeToast/skillsNudge.ts | 123 | export function isSkillsNudgeDroppedConnection(error: unknown): boolean { | CODE |
| LOW | …end/app/src/components/SkillsNudgeToast/skillsNudge.ts | 158 | export function skillsNudgeSuppressedLabel(reason: string): string { | CODE |
| LOW | …end/app/src/components/SkillsNudgeToast/skillsNudge.ts | 173 | export function skillsNudgeInstallSuccessLabel( | CODE |
| LOW | …end/app/src/components/SkillsNudgeToast/skillsNudge.ts | 207 | export function skillsNudgeInstallFailureLabel(error: unknown): string { | CODE |
| LOW | frontend/connection/src/ConnectionManager.test.ts | 92 | function getMockWebsocketConnection(): WebsocketConnection { | CODE |
| LOW | frontend/connection/src/StaticConnection.tsx | 100 | export async function dispatchAppForwardMessages( | CODE |
| LOW | frontend/connection/src/StaticConnection.tsx | 125 | export async function establishStaticConnection( | CODE |
| LOW | frontend/connection/src/WebsocketConnection.test.tsx | 113 | function setupFetchMockWithFailures( | CODE |
| LOW | frontend/connection/src/utils.ts | 39 | export function isHostConfigBypassEnabled(): boolean { | CODE |
| LOW | frontend/connection/src/ForwardMessageCache.test.ts | 51 | function createForwardMsgWithFragment( | CODE |
| LOW | frontend/lib/src/BackendOperationClient.ts | 95 | export function getBackendOperationReason(error: unknown): string | undefined { | CODE |
| LOW | frontend/lib/src/util/utils.test.ts | 1357 | function makeIframeWithEmbeddingClass( | CODE |
| LOW | frontend/lib/src/util/formatNumber.ts | 48 | function formatIntlNumberWithLocales( | CODE |
| LOW | frontend/lib/src/util/utils.ts | 210 | export function isLightThemeInQueryParams(): boolean { | CODE |
| LOW | frontend/lib/src/util/utils.ts | 482 | export function labelVisibilityProtoValueToEnum( | CODE |
| LOW | frontend/lib/src/util/utils.ts | 504 | export function chatInputAcceptFileProtoValueToEnum( | CODE |
| LOW | frontend/lib/src/util/utils.ts | 525 | function findAnIFrameWithClassName( | CODE |
| LOW | frontend/lib/src/util/utils.ts | 620 | export function extractPageNameFromPathName( | CODE |
| LOW | frontend/lib/src/util/utils.ts | 693 | function decamelizePreservingUppercase(value: string): string { | CODE |
| LOW | frontend/lib/src/dataframes/arrowFormatUtils.ts | 219 | function parsePandasIntervalExtensionMetadata( | CODE |
| LOW | frontend/lib/src/dataframes/arrowFormatUtils.ts | 250 | function convertTimestampToSeconds( | CODE |
| LOW | frontend/lib/src/dataframes/arrowParseUtils.ts | 241 | function parsePandasIndexColumnTypes( | CODE |
| LOW | frontend/lib/src/dataframes/arrowParseUtils.ts | 336 | function parseCategoricalOptionsForColumns( | CODE |
| LOW | …ib/src/components/core/Layout/useLayoutStyles.test.tsx | 1214 | function withContentWidthContainer(parentWidth?: number) { | CODE |
| LOW | frontend/lib/src/components/core/Block/utils.ts | 247 | export function checkFlexContainerBackwardsCompatibile( | CODE |
| LOW | frontend/lib/src/components/core/Block/utils.ts | 260 | export function shouldActivateScrollToBottom(blockNode: BlockNode): boolean { | CODE |
| LOW | frontend/lib/src/components/core/Block/utils.ts | 278 | export function getBorderBackwardsCompatible(blockProto: BlockProto): boolean { | CODE |
| LOW | …src/components/core/Block/ElementNodeRenderer.test.tsx | 776 | async function renderAndGetContainerConfig( | CODE |
| LOW | frontend/lib/src/components/core/Block/Block.test.tsx | 58 | function makeHorizontalBlockWithColumns( | CODE |
| LOW | frontend/lib/src/components/core/Block/Block.test.tsx | 139 | function makeVerticalBlockComponent(node: BlockNode): ReactElement { | CODE |
| LOW | …nd/lib/src/components/shared/horizontalOverflowFade.ts | 34 | export function getHorizontalOverflowFadeStyles(fadeSize: string): CSSObject { | CODE |
| LOW | …src/components/shared/Toolbar/overlayToolbarSpacing.ts | 35 | export function getOverlayToolbarTopDistance( | CODE |
| LOW | …src/components/shared/Toolbar/overlayToolbarSpacing.ts | 46 | export function getBareEmbedOverlayToolbarPadding( | CODE |
| LOW | …/components/shared/Checkbox/checkboxIndicatorStyles.ts | 42 | export function getCheckboxIndicatorColors( | CODE |
| LOW | …/components/shared/Checkbox/checkboxIndicatorStyles.ts | 77 | export function getCheckboxIndicatorLayoutStyles( | CODE |
| LOW | …/components/shared/Checkbox/checkboxIndicatorStyles.ts | 96 | export function getCheckboxIndicatorSvgStyles( | CODE |
| LOW | frontend/lib/src/components/shared/Icon/DynamicIcon.tsx | 80 | export function extractLeadingMaterialIcon( | CODE |
| LOW | frontend/lib/src/components/shared/Modal/Modal.tsx | 91 | function shouldCloseOnInteractOutside(element: Element): boolean { | CODE |
| LOW | …nd/lib/src/components/shared/Base/styled-components.ts | 150 | export function getSecondaryIconButtonColorStyles( | CODE |
| LOW | …mponents/shared/StreamlitMarkdown/styled-components.ts | 103 | function getMarkdownHeadingDefinitions( | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 235 | function rehypeSetCodeInlineProperty() { | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 848 | function createRemarkColoringAndSmall( | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 967 | function createRemarkUnsupportedDirectivesCleanup(): () => ( | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 991 | function createRemarkMaterialIcons(theme: EmotionTheme) { | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 1043 | function createRemarkStreamlitLogo() { | CODE |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 1073 | function createRemarkTypographicalSymbols() { | CODE |
| LOW | …nts/elements/DeckGlJsonChart/patchLumaCanvasContext.ts | 64 | function patchedGetMaxDrawingBufferSize(): [number, number] { | CODE |
| 8650 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | pyproject.toml | 15 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | pyproject.toml | 17 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | pyproject.toml | 24 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 54 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 56 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 185 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 187 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 386 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 388 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 471 | # ============================================================================= | COMMENT |
| MEDIUM | pyproject.toml | 473 | # ============================================================================= | COMMENT |
| MEDIUM | …d/lib/src/components/shared/UploadedFile/utils.test.ts | 39 | // ── getFileTypeIcon ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/lib/src/components/shared/UploadedFile/utils.test.ts | 171 | // ── getFileExtension ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/lib/src/components/shared/UploadedFile/utils.test.ts | 204 | // ── isImageFile ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/lib/src/components/shared/UploadedFile/utils.test.ts | 224 | // ── truncateFilename ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …d/lib/src/components/shared/UploadedFile/utils.test.ts | 389 | // ── useImagePreview ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ontend/lib/src/components/shared/UploadedFile/utils.ts | 32 | // ── File extension helpers ────────────────────────────────────────── | COMMENT |
| MEDIUM | …ontend/lib/src/components/shared/UploadedFile/utils.ts | 131 | // ── Filename truncation ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …ontend/lib/src/components/shared/UploadedFile/utils.ts | 180 | // ── Image preview hook ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | e2e_playwright/st_chat_input_test.py | 1862 | # ===================================================================== | COMMENT |
| MEDIUM⚡ | e2e_playwright/st_chat_input_test.py | 1864 | # ===================================================================== | COMMENT |
| MEDIUM | e2e_playwright/st_expander.py | 120 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 122 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 213 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 226 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 247 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 268 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 270 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 281 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 284 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 305 | # ============================================================================ | STRING |
| MEDIUM | e2e_playwright/st_expander.py | 307 | # ============================================================================ | STRING |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 49 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 51 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 102 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 104 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 277 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 279 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 306 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 308 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 325 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 327 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 425 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 427 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 523 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 525 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 563 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 565 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 625 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | e2e_playwright/web_server_test.py | 627 | # ============================================================================= | COMMENT |
| MEDIUM | e2e_playwright/web_server_test.py | 491 | # ============================================================================= | COMMENT |
| MEDIUM | e2e_playwright/web_server_test.py | 493 | # ============================================================================= | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 124 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 126 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 161 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 163 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 174 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 176 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 197 | # ============================================================================ | COMMENT |
| MEDIUM | e2e_playwright/st_popover.py | 199 | # ============================================================================ | COMMENT |
| 695 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | e2e_playwright/st_feedback_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_slider_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_dataframe_selections_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_select_slider_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_checkbox_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_multiselect_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_camera_input_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_link_button_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_radio_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_date_input_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_plotly_chart_select_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_color_picker_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_number_input_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_segmented_control_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_selectbox_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_text_input_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_toggle_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_components_v1_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_altair_chart_basic_select_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_pills_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_data_editor_editing_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_download_button_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_file_uploader_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_time_input_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_text_area_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_button_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_container_test.py | 0 | test that the container can have a custom css class via the key argument. | STRING |
| HIGH | e2e_playwright/st_slider_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_select_slider_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_multiselect_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_camera_input_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_audio_input_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_number_input_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_selectbox_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_text_input_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_file_uploader_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_text_area_test.py | 0 | test that on_change='ignore' suppresses rerun and sends value on next rerun. | STRING |
| HIGH | e2e_playwright/st_datetime_input_test.py | 0 | test that a clearable time input (value=none) can be seeded as empty from url. | STRING |
| HIGH | e2e_playwright/st_date_input_test.py | 0 | test that a clearable time input (value=none) can be seeded as empty from url. | STRING |
| HIGH | e2e_playwright/st_time_input_test.py | 0 | test that a clearable time input (value=none) can be seeded as empty from url. | STRING |
| HIGH | e2e_playwright/st_datetime_input_test.py | 0 | test that an invalid url value reverts to the default. | STRING |
| HIGH | e2e_playwright/st_date_input_test.py | 0 | test that an invalid url value reverts to the default. | STRING |
| HIGH | e2e_playwright/st_time_input_test.py | 0 | test that an invalid url value reverts to the default. | STRING |
| HIGH | e2e_playwright/st_datetime_input_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_radio_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_date_input_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_pills_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_time_input_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_checkbox_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_toggle_test.py | 0 | test that on_change='ignore' suppresses rerun, updates bound query params on click, and sends the buffered value on the | STRING |
| HIGH | e2e_playwright/st_altair_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_line_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_bar_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_vega_lite_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_area_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_scatter_chart_test.py | 0 | `alt` becomes the vega graphics-document accessible name. | STRING |
| HIGH | e2e_playwright/st_checkbox_test.py | 0 | test that invalid url values are cleared and widget uses default. | STRING |
| HIGH | e2e_playwright/st_radio_test.py | 0 | test that invalid url values are cleared and widget uses default. | STRING |
| HIGH | e2e_playwright/st_color_picker_test.py | 0 | test that invalid url values are cleared and widget uses default. | STRING |
| HIGH | e2e_playwright/st_number_input_test.py | 0 | test that invalid url values are cleared and widget uses default. | STRING |
| 350 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .pre-commit-config.yaml | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | pyproject.toml | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | pyproject.toml | 41 | # Check their compatibility before raising it. | COMMENT |
| LOW | pyproject.toml | 61 | # - Exact pins (==) for tools we deliberately hold back and let Dependabot bump on | COMMENT |
| LOW | pyproject.toml | 121 | "requests-mock", | COMMENT |
| LOW | frontend/.yarnrc.yml | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | frontend/.yarnrc.yml | 21 | # @toast-ui/react-editor is an indirect dependency of Glide Data Grid. Its | COMMENT |
| LOW | frontend/vitest.setup.ts | 21 | // public API if React Aria ever exposes it. | COMMENT |
| LOW | frontend/vitest.setup.ts | 41 | act(() => { | COMMENT |
| LOW | frontend/vitest.setup.ts | 61 | // get StreamlitConfig() { | COMMENT |
| LOW | frontend/app/performance/apps/crud_app.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | frontend/app/performance/apps/blank_app.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | frontend/app/performance/apps/__init__.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | frontend/app/performance/apps/dashboard_app.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | …ontend/app/performance/apps/multipage/multipage_app.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | …app/performance/apps/multipage/pages/2_Mapping_Demo.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | …pp/performance/apps/multipage/pages/3_Plotting_Demo.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | …p/performance/apps/multipage/pages/1_Animation_Demo.py | 1 | # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022-2026) | COMMENT |
| LOW | frontend/app/src/App.tsx | 361 | COMMENT | |
| LOW | frontend/app/src/App.tsx | 381 | // Whether a suppression reason has been reported this page load. Tracked | COMMENT |
| LOW | frontend/app/src/App.tsx | 641 | // | COMMENT |
| LOW | frontend/app/src/App.tsx | 861 | this.hostCommunicationMgr.sendMessageToHost({ | COMMENT |
| LOW | frontend/app/src/App.tsx | 1661 | }) | COMMENT |
| LOW | frontend/app/src/App.tsx | 1741 | } | COMMENT |
| LOW | frontend/app/src/App.tsx | 1781 | // Within this session the server won't re-run detection, so suppress | COMMENT |
| LOW | frontend/app/src/App.tsx | 1801 | // and surface a reassuring, retry-friendly message; re-install is | COMMENT |
| LOW | frontend/utils/src/types/index.ts | 41 | // from where index.html is served. | COMMENT |
| LOW | frontend/lib/src/hostComm/HostCommunicationManager.tsx | 261 | // no trusted parent frame to relay them (window.parent is a third-party | COMMENT |
| LOW | frontend/lib/src/util/utils.ts | 621 | pathname: string, | COMMENT |
| LOW | frontend/lib/src/util/IFrameUtil.ts | 41 | // Lets the sandboxed document open new windows without those windows inheriting the sandboxing. For example, this can | COMMENT |
| LOW | frontend/lib/src/dataframes/arrowParseUtils.ts | 361 | // Load arrow table object from Arrow IPC bytes. | COMMENT |
| LOW | …ntend/lib/src/components/core/SkillsInstallContext.tsx | 161 | } | COMMENT |
| LOW | …ntend/lib/src/components/shared/Dropdown/Selectbox.tsx | 221 | // open is always true because whileElementsMounted already gates autoUpdate | COMMENT |
| LOW | …ntend/lib/src/components/shared/Dropdown/Selectbox.tsx | 461 | // reporting the unchanged committed label on close/revert), which must | COMMENT |
| LOW | …end/lib/src/components/shared/Tooltip/Tooltip.test.tsx | 41 | const renderTooltip = (props: Partial<TooltipProps> = {}): RenderResult => { | COMMENT |
| LOW | …/components/shared/BaseColorPicker/BaseColorPicker.tsx | 141 | COMMENT | |
| LOW | …/src/components/shared/BaseButton/styled-components.ts | 761 | // SC_SIBLING_* — used on the sibling (right) side of `+` and `:has()` rules, where | COMMENT |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 441 | // Accessibility: | COMMENT |
| LOW | …ponents/shared/StreamlitMarkdown/StreamlitMarkdown.tsx | 901 | data.hProperties.className = [className] | COMMENT |
| LOW | frontend/lib/src/components/elements/Toast/Toast.tsx | 41 | const { body, icon, duration } = element | COMMENT |
| LOW | …ontend/lib/src/components/elements/Popover/Popover.tsx | 221 | // outside BaseButtonTooltip is always rendered once and correctly positioned. | COMMENT |
| LOW | …ontend/lib/src/components/elements/Popover/Popover.tsx | 241 | // that clamp. | COMMENT |
| LOW | …ontend/lib/src/components/elements/Popover/Popover.tsx | 321 | // The popover is portalled to document.body and uses isNonModal-style | COMMENT |
| LOW | …ments/ArrowVegaLiteChart/useVegaElementPreprocessor.ts | 401 | alt, | COMMENT |
| LOW | …nts/elements/ArrowVegaLiteChart/ArrowVegaLiteChart.tsx | 321 | const needsContainerWidth = useStretchWidth || isFullScreen | COMMENT |
| LOW | …nts/elements/ArrowVegaLiteChart/ArrowVegaLiteChart.tsx | 421 | // The references to data and datasets will always change each rerun | COMMENT |
| LOW | …components/elements/ArrowVegaLiteChart/useVegaEmbed.ts | 221 | expr: expressionInterpreter, | COMMENT |
| LOW | …ponents/elements/ExceptionElement/ExceptionElement.tsx | 141 | COMMENT | |
| LOW | …/src/components/elements/EChartsChart/EChartsChart.tsx | 301 | // When ``echarts.init`` runs against a 0x0 container (hasBeenSized is latched | COMMENT |
| LOW | …/src/components/elements/EChartsChart/EChartsChart.tsx | 421 | // Resize the chart when its container dimensions change. Entering/exiting | COMMENT |
| LOW | …ib/src/components/widgets/DataFrame/arrowUtils.test.ts | 121 | }, | COMMENT |
| LOW | …ib/src/components/widgets/DataFrame/arrowUtils.test.ts | 141 | #T_7e5cc_row9_col0 { background-color: #f0f9b8; color: #000000 } | COMMENT |
| LOW | …end/lib/src/components/widgets/DataFrame/DataFrame.tsx | 621 | // from a previous sort is still pending (e.g. back-to-back sorts before | COMMENT |
| LOW | …c/components/widgets/DataFrame/hooks/useCustomTheme.ts | 81 | // glide-data-grid always receives fully opaque colors. The app | COMMENT |
| LOW | …rc/components/widgets/DataFrame/hooks/useTableSizer.ts | 201 | // to prevent "maximum update depth exceeded" error. The reason | COMMENT |
| LOW | …d/lib/src/components/widgets/MenuButton/MenuButton.tsx | 81 | const instanceId = useId() | COMMENT |
| LOW | …c/components/widgets/BidiComponent/utils/theme.test.ts | 241 | it("supports custom prefix", () => { | COMMENT |
| LOW | …c/components/widgets/BidiComponent/utils/theme.test.ts | 261 | // 1) Add the new key to `allProtoFieldsGuard` below. | COMMENT |
| LOW | …lib/src/components/widgets/ButtonGroup/ButtonGroup.tsx | 221 | // announce that the field is mandatory. | COMMENT |
| LOW | …end/lib/src/components/widgets/TextInput/TextInput.tsx | 241 | // - dirty: keystrokes not yet committed. Drop the write entirely rather | COMMENT |
| 1326 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | frontend/app/performance/apps/crud_app.py | 15 | CODE | |
| LOW | frontend/app/performance/apps/blank_app.py | 16 | CODE | |
| LOW | e2e_playwright/st_chat_input_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_layouts_container_various_elements.py | 15 | CODE | |
| LOW | e2e_playwright/st_feedback_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_pagination_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_pydeck_chart_select.py | 14 | CODE | |
| LOW | e2e_playwright/auth.py | 15 | CODE | |
| LOW | e2e_playwright/asgi_app_test.py | 21 | CODE | |
| LOW | e2e_playwright/skills_install_callout_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_pyplot.py | 25 | CODE | |
| LOW | e2e_playwright/conftest.py | 20 | CODE | |
| LOW | e2e_playwright/auth_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_app_advanced.py | 20 | CODE | |
| LOW | e2e_playwright/st_main_layout_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_navigation_external_links_test.py | 21 | CODE | |
| LOW | e2e_playwright/appnode_hierarchy.py | 27 | CODE | |
| LOW | e2e_playwright/st_dataframe_styler_support.py | 15 | CODE | |
| LOW | e2e_playwright/st_pydeck_chart_select_test.py | 16 | CODE | |
| LOW | e2e_playwright/st_datetime_input_test.py | 15 | CODE | |
| LOW | e2e_playwright/mega_tester_app.py | 15 | CODE | |
| LOW | e2e_playwright/st_navigation_expanded_test.py | 17 | CODE | |
| LOW | e2e_playwright/st_app_advanced_script.py | 21 | CODE | |
| LOW | e2e_playwright/st_app_advanced_test.py | 21 | CODE | |
| LOW | e2e_playwright/st_pydeck_chart.py | 16 | CODE | |
| LOW | e2e_playwright/web_server_test.py | 30 | CODE | |
| LOW | e2e_playwright/st_multiselect_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_fragments_nested_test.py | 15 | CODE | |
| LOW | e2e_playwright/markdown_features_test.py | 15 | CODE | |
| LOW | e2e_playwright/basic_app_test.py | 14 | CODE | |
| LOW | e2e_playwright/st_map.py | 15 | CODE | |
| LOW | e2e_playwright/st_map.py | 23 | CODE | |
| LOW | e2e_playwright/st_echarts_chart_test.py | 17 | CODE | |
| LOW | e2e_playwright/st_layouts_container_gap_size.py | 15 | CODE | |
| LOW | e2e_playwright/st_layouts_container_gap_size.py | 22 | CODE | |
| LOW | e2e_playwright/websocket_reconnects_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_navigation_test.py | 15 | CODE | |
| LOW | e2e_playwright/forward_msg_cache_test.py | 14 | CODE | |
| LOW | e2e_playwright/st_audio_input_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_table.py | 15 | CODE | |
| LOW | e2e_playwright/st_selectbox_test.py | 14 | CODE | |
| LOW | e2e_playwright/st_space.py | 15 | CODE | |
| LOW | e2e_playwright/st_space.py | 22 | CODE | |
| LOW | e2e_playwright/st_layouts_container_alignment.py | 15 | CODE | |
| LOW | e2e_playwright/skills_nudge_test.py | 15 | CODE | |
| LOW | e2e_playwright/hostframe_app_test.py | 15 | CODE | |
| LOW | e2e_playwright/mega_tester_app_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_data_editor_editing.py | 15 | CODE | |
| LOW | e2e_playwright/st_dataframe_config.py | 15 | CODE | |
| LOW | e2e_playwright/st_dataframe_interactions_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_image.py | 15 | CODE | |
| LOW | e2e_playwright/iframe_resizer_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_dataframe_alt.py | 17 | CODE | |
| LOW | e2e_playwright/st_data_editor_editing_test.py | 15 | CODE | |
| LOW | e2e_playwright/st_multiselect.py | 15 | CODE | |
| LOW | e2e_playwright/st_fragment_parallel_test.py | 17 | CODE | |
| LOW | e2e_playwright/st_echarts_chart.py | 23 | CODE | |
| LOW | e2e_playwright/st_columns.py | 15 | CODE | |
| LOW | e2e_playwright/st_columns.py | 25 | CODE | |
| LOW | e2e_playwright/appnode_hierarchy_test.py | 15 | CODE | |
| 731 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | pyproject.toml | 18 | # This file defines: | COMMENT |
| MEDIUM | e2e_playwright/st_pyplot.py | 93 | # Create a simple figure for width testing | COMMENT |
| MEDIUM | e2e_playwright/st_help.py | 96 | # Create a class with very long documentation to demonstrate width differences | COMMENT |
| MEDIUM⚡ | e2e_playwright/basic_app_test.py | 42 | # Define an acceptable threshold for total size of web assets loaded on the | COMMENT |
| MEDIUM⚡ | e2e_playwright/basic_app_test.py | 94 | # Define an acceptable threshold for total websocket message size (in bytes) | COMMENT |
| MEDIUM | e2e_playwright/forward_msg_cache.py | 79 | # Create a large dataframe | COMMENT |
| MEDIUM | e2e_playwright/web_server.py | 35 | # Create a simple 1x1 red pixel PNG for testing. | COMMENT |
| MEDIUM⚡ | e2e_playwright/forward_msg_cache_test.py | 78 | # Define an acceptable threshold for total websocket message size (in MB) | COMMENT |
| MEDIUM | e2e_playwright/st_table.py | 308 | # Create a larger dataset for scrolling tests | COMMENT |
| MEDIUM | e2e_playwright/asgi_app.py | 19 | # Create the ASGI app pointing to the mega_tester_app.py script | COMMENT |
| MEDIUM | e2e_playwright/st_plotly_chart_dimensions.py | 24 | # Create a simple chart for width testing | COMMENT |
| MEDIUM | e2e_playwright/st_plotly_chart_dimensions.py | 51 | # Create a simple chart for height testing | COMMENT |
| MEDIUM | e2e_playwright/st_altair_chart.py | 153 | # Create a scatter plot with marginal histograms using the pattern: top_hist & (points | right_hist) | COMMENT |
| MEDIUM | e2e_playwright/st_file_uploader_test.py | 429 | # Create a temporary directory with test files | COMMENT |
| MEDIUM | e2e_playwright/multipage_apps_v2/mpa_v2_top_nav.py | 115 | # Create a single section with 3 pages | COMMENT |
| MEDIUM | scripts/create_release.py | 54 | # Create the release with the generated release notes | COMMENT |
| MEDIUM | scripts/update_material_icon_font_and_names.py | 71 | # Create a set to store unique names | COMMENT |
| MEDIUM | .github/workflows/release-tag-and-pr-creation.yml | 127 | # Create the tag explicitly on the verified commit | COMMENT |
| MEDIUM | .github/actions/make_init/action.yml | 69 | # Create the cache directory if it does not exist. | COMMENT |
| MEDIUM | lib/streamlit/delta_generator.py | 675 | # Create a child cursor for this new block. open_block() also advances | COMMENT |
| MEDIUM | lib/streamlit/config.py | 1443 | # Create a section for each custom theme element | STRING |
| MEDIUM | lib/streamlit/type_util.py | 493 | # Create a new event loop. | COMMENT |
| MEDIUM | lib/streamlit/config_util.py | 560 | # Create a filtered copy of the theme content | COMMENT |
| MEDIUM | lib/streamlit/config_util.py | 575 | # Create the section in our filtered theme and validate it | COMMENT |
| MEDIUM | lib/streamlit/web/bootstrap.py | 138 | # Create the loop before Runner.run so a factory failure can | COMMENT |
| MEDIUM | lib/streamlit/web/bootstrap.py | 492 | # Create the server. It won't start running yet. | COMMENT |
| MEDIUM | lib/streamlit/web/bootstrap.py | 513 | # Define a main function to handle the event loop logic | COMMENT |
| MEDIUM | lib/streamlit/web/server/starlette/starlette_app.py | 292 | # Create the Starlette application with lifespan handler | COMMENT |
| MEDIUM | lib/streamlit/web/server/starlette/starlette_app.py | 810 | # Create the runtime if not already created | COMMENT |
| MEDIUM | lib/streamlit/runtime/secrets.py | 393 | # Create a mutable copy of current secrets | COMMENT |
| MEDIUM | lib/streamlit/runtime/state/widgets.py | 198 | # Create the widget's updated metadata, and register it with session_state. | COMMENT |
| MEDIUM | lib/streamlit/runtime/caching/cache_data_api.py | 241 | # Create a new cache object and put it in our dict | COMMENT |
| MEDIUM | lib/streamlit/runtime/caching/cache_utils.py | 1224 | # Create the hash from each arg value, except for those args whose name | COMMENT |
| MEDIUM | …/streamlit/runtime/caching/cache_background_refresh.py | 112 | # Create the pool lazily (double-checked) so no threads are spawned until a | COMMENT |
| MEDIUM | lib/streamlit/runtime/caching/cache_resource_api.py | 197 | # Create a new cache object and put it in our dict | COMMENT |
| MEDIUM | lib/streamlit/runtime/caching/cache_resource_api.py | 596 | ... # Create a database session object that points to the URL. | STRING |
| MEDIUM | lib/streamlit/runtime/caching/cache_resource_api.py | 620 | ... # Create a database session object that points to the URL. | STRING |
| MEDIUM | lib/streamlit/runtime/caching/cache_resource_api.py | 633 | ... # Create a database connection object that points to the URL. | STRING |
| MEDIUM | lib/streamlit/runtime/caching/cache_resource_api.py | 653 | ... # Create a database connection object that points to the URL. | STRING |
| MEDIUM | lib/streamlit/components/v2/bidi_component/main.py | 339 | # Create an empty state with the default value and return it | COMMENT |
| MEDIUM | lib/streamlit/elements/graphviz_chart.py | 129 | >>> # Create a graphlib graph object | STRING |
| MEDIUM | lib/streamlit/elements/lib/built_in_chart_utils.py | 208 | # Create a Chart with x and y encodings. | COMMENT |
| MEDIUM | lib/streamlit/elements/lib/built_in_chart_utils.py | 310 | # Create a selection that chooses the nearest point & selects based on x-value. | COMMENT |
| MEDIUM | lib/streamlit/elements/lib/options_selector_utils.py | 530 | # Create a set of formatted options for O(1) lookup. | COMMENT |
| MEDIUM | lib/tests/delta_generator_test_case.py | 61 | # Create a new ScriptRunContext to use for the test. | COMMENT |
| MEDIUM | lib/tests/delta_generator_test_case.py | 77 | # Create a MemoryMediaFileStorage instance, and the MediaFileManager | COMMENT |
| MEDIUM | lib/tests/streamlit/streamlit_test.py | 275 | # Define an acceptable threshold for import time (in microseconds). | COMMENT |
| MEDIUM | lib/tests/streamlit/write_test.py | 525 | # Create a mock for ChatCompletionChunk | COMMENT |
| MEDIUM | lib/tests/streamlit/config_util_test.py | 1150 | # Create a theme file larger than 1MB | COMMENT |
| MEDIUM⚡ | lib/tests/streamlit/components_test.py | 552 | # Create a component instance without a key and some custom data | COMMENT |
| MEDIUM⚡ | lib/tests/streamlit/components_test.py | 559 | # Create a second component instance with different custom data | COMMENT |
| MEDIUM | lib/tests/streamlit/components_test.py | 523 | # Create a component instance with a key and some custom data | COMMENT |
| MEDIUM | lib/tests/streamlit/components_test.py | 535 | # Create a second component instance with the same key, and different custom data | COMMENT |
| MEDIUM | lib/tests/streamlit/components_test.py | 767 | # Create a test DataFrame | COMMENT |
| MEDIUM | lib/tests/streamlit/components_test.py | 788 | # Create an empty DataFrame | COMMENT |
| MEDIUM⚡ | lib/tests/streamlit/config_test.py | 199 | # Create the config option. | COMMENT |
| MEDIUM | lib/tests/streamlit/config_test.py | 235 | # Create the config option. | COMMENT |
| MEDIUM | lib/tests/streamlit/config_test.py | 490 | # Create a dummy default option. | COMMENT |
| MEDIUM | lib/tests/streamlit/config_test.py | 563 | # Create a dummy default option | COMMENT |
| MEDIUM | lib/tests/streamlit/config_test.py | 599 | # Create a dummy default option. | COMMENT |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | e2e_playwright/conftest.py | 1353 | except FileNotFoundError: | CODE |
| HIGH | e2e_playwright/conftest.py | 314 | except ProcessLookupError: | CODE |
| HIGH | e2e_playwright/conftest.py | 318 | except subprocess.TimeoutExpired: | CODE |
| HIGH | e2e_playwright/auth_test.py | 72 | except requests.RequestException: | CODE |
| HIGH | e2e_playwright/st_status.py | 59 | except Exception: | CODE |
| HIGH | e2e_playwright/st_magic.py | 68 | except RuntimeError: | CODE |
| HIGH | e2e_playwright/st_audio_input_test.py | 49 | except Exception: | CODE |
| HIGH | e2e_playwright/shared/performance.py | 98 | except Exception: | CODE |
| HIGH | e2e_playwright/shared/performance.py | 190 | except Exception: | CODE |
| HIGH | e2e_playwright/shared/performance.py | 203 | except Exception: | CODE |
| HIGH | e2e_playwright/shared/performance.py | 197 | except Exception: | CODE |
| HIGH | e2e_playwright/shared/stats_reporter.py | 125 | except AttributeError: | CODE |
| HIGH | scripts/cli_regression_tests.py | 119 | except ProcessLookupError: | CODE |
| HIGH | scripts/cli_regression_tests.py | 152 | except ProcessLookupError: | CODE |
| HIGH | scripts/changelog_fetch_prs.py | 154 | except (json.JSONDecodeError, KeyError): | CODE |
| HIGH | scripts/changelog_fetch_prs.py | 172 | except (json.JSONDecodeError, KeyError): | CODE |
| HIGH | lib/streamlit/config.py | 389 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/config.py | 2961 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/config.py | 2966 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/dataframe_util.py | 721 | except AttributeError: | CODE |
| HIGH | lib/streamlit/dataframe_util.py | 740 | except (pa.ArrowInvalid, pa.ArrowTypeError, pa.ArrowNotImplementedError): | CODE |
| HIGH | lib/streamlit/string_util.py | 371 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/string_util.py | 255 | except StreamlitAPIException: | CODE |
| HIGH | lib/streamlit/net_util.py | 119 | except (AttributeError, OSError): | CODE |
| HIGH | lib/streamlit/net_util.py | 125 | except (AttributeError, OSError): | CODE |
| HIGH | lib/streamlit/type_util.py | 447 | except LookupError: | CODE |
| HIGH | lib/streamlit/type_util.py | 501 | except StopAsyncIteration: | CODE |
| HIGH | lib/streamlit/watcher/local_sources_watcher.py | 341 | except AttributeError: | CODE |
| HIGH | lib/streamlit/web/bootstrap.py | 523 | except RuntimeError: | CODE |
| HIGH | lib/streamlit/web/skills.py | 324 | except RuntimeError: | CODE |
| HIGH | lib/streamlit/web/skills.py | 422 | except (OSError, RuntimeError): | CODE |
| HIGH | lib/streamlit/web/skills.py | 435 | except (OSError, RuntimeError): | CODE |
| HIGH | lib/streamlit/web/skills.py | 429 | except (OSError, RuntimeError): | CODE |
| HIGH | lib/streamlit/web/skills.py | 668 | except (OSError, ValueError): | CODE |
| HIGH | …/streamlit/web/server/starlette/starlette_websocket.py | 356 | except WebSocketDisconnect: | CODE |
| HIGH | …/streamlit/web/server/starlette/starlette_websocket.py | 589 | except WebSocketDisconnect: | CODE |
| HIGH | lib/streamlit/web/server/starlette/starlette_app.py | 936 | except RuntimeError: | CODE |
| HIGH | lib/streamlit/runtime/credentials.py | 237 | except RuntimeError: | CODE |
| HIGH | lib/streamlit/runtime/secrets.py | 451 | except (StreamlitMaxRetriesError, FileNotFoundError): | CODE |
| HIGH | lib/streamlit/runtime/parallel_coordinator.py | 64 | except AttributeError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 706 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 814 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 820 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 833 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 839 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/state/session_state.py | 742 | except KeyError: | CODE |
| HIGH | lib/streamlit/runtime/scriptrunner/exec_code.py | 75 | except ValueError: | CODE |
| HIGH | lib/streamlit/runtime/scriptrunner/script_runner.py | 1051 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/runtime/scriptrunner/script_runner.py | 1059 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/runtime/scriptrunner/script_runner.py | 871 | except Exception: # noqa: S110 | CODE |
| HIGH | lib/streamlit/runtime/caching/cache_utils.py | 753 | except CacheKeyNotFoundError: | CODE |
| HIGH | lib/streamlit/runtime/caching/cache_utils.py | 945 | except CacheKeyNotFoundError: | CODE |
| HIGH | lib/streamlit/runtime/caching/cache_utils.py | 837 | except CacheKeyNotFoundError: | CODE |
| HIGH | lib/streamlit/runtime/caching/cache_utils.py | 1000 | except CacheKeyNotFoundError: | CODE |
| HIGH | …it/runtime/caching/storage/local_disk_cache_storage.py | 187 | except FileNotFoundError: | CODE |
| HIGH | …it/runtime/caching/storage/local_disk_cache_storage.py | 174 | except (FileNotFoundError, OSError): | CODE |
| HIGH | lib/streamlit/testing/v1/element_tree.py | 498 | except (KeyError, ValueError): | CODE |
| HIGH | lib/streamlit/testing/v1/element_tree.py | 2226 | except ValueError: | CODE |
| HIGH | lib/streamlit/components/v2/bidi_component/main.py | 235 | except (TypeError, ValueError): | CODE |
| HIGH | lib/streamlit/elements/lib/options_selector_utils.py | 392 | except Exception: # noqa: S110 | CODE |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e_playwright/conftest.py | 432 | except Exception: | CODE |
| LOW | e2e_playwright/conftest.py | 1199 | except Exception as exc: | CODE |
| LOW | e2e_playwright/conftest.py | 1215 | except Exception: | CODE |
| LOW | e2e_playwright/st_markdown.py | 180 | except Exception: | STRING |
| LOW | e2e_playwright/st_status.py | 59 | except Exception: | CODE |
| LOW | e2e_playwright/mega_tester_app.py | 1196 | except Exception as ex: | STRING |
| LOW | e2e_playwright/mega_tester_app.py | 1209 | except Exception as ex: | STRING |
| LOW | e2e_playwright/basic_app_test.py | 61 | except Exception as ex: | CODE |
| MEDIUM | e2e_playwright/basic_app_test.py | 62 | print(f"Error calculating size of web assets: {ex}") | CODE |
| LOW | e2e_playwright/st_audio_input_test.py | 49 | except Exception: | CODE |
| LOW | e2e_playwright/st_rerun.py | 45 | except Exception as e: | CODE |
| MEDIUM | e2e_playwright/st_rerun.py | 41 | def fragment_with_rerun_in_try_block(): | CODE |
| LOW | e2e_playwright/shared/performance.py | 98 | except Exception: | CODE |
| LOW⚡ | e2e_playwright/shared/performance.py | 190 | except Exception: | CODE |
| LOW⚡ | e2e_playwright/shared/performance.py | 197 | except Exception: | CODE |
| LOW⚡ | e2e_playwright/shared/performance.py | 203 | except Exception: | CODE |
| LOW | e2e_playwright/shared/dataframe_utils.py | 490 | except Exception as e: | CODE |
| LOW | e2e_playwright/load_testing/worker.py | 171 | except Exception as e: | CODE |
| LOW | e2e_playwright/load_testing/conftest.py | 234 | except Exception: | CODE |
| LOW | e2e_playwright/load_testing/test_load.py | 299 | except Exception as e: | CODE |
| LOW | specs/2026-03-05-parallel-fragments/tech-spec.md | 313 | except Exception as e: | CODE |
| LOW | .claude/hooks/pre_bash_redirect.py | 71 | except Exception as e: | STRING |
| MEDIUM | .claude/hooks/pre_bash_redirect.py | 68 | def main() -> None: | CODE |
| LOW | scripts/update_e2e_snapshots.py | 290 | except Exception as e: | CODE |
| MEDIUM | scripts/update_e2e_snapshots.py | 291 | print(f"Error: {e}") | CODE |
| MEDIUM | scripts/snapshot_cleanup.py | 165 | print(f"Error finding test files: {e}") | CODE |
| LOW | scripts/snapshot_cleanup.py | 214 | except Exception as e: | CODE |
| MEDIUM | scripts/snapshot_cleanup.py | 215 | print(f"Error processing {test_file}: {e}") | CODE |
| LOW | scripts/snapshot_cleanup.py | 233 | except Exception as e: | CODE |
| MEDIUM | scripts/snapshot_cleanup.py | 234 | print(f"Error searching for {snapshot_name}: {e}") | CODE |
| LOW | scripts/snapshot_cleanup.py | 432 | except Exception as e: | CODE |
| LOW | scripts/check_license_headers.py | 107 | except Exception: | CODE |
| MEDIUM | scripts/sync_vscode_devcontainer.py | 87 | print(f"Error: File not found: {file_path}") | CODE |
| MEDIUM | scripts/sync_vscode_devcontainer.py | 90 | print(f"Error: Invalid JSON in {file_path}: {e}") | CODE |
| LOW | scripts/sync_vscode_devcontainer.py | 113 | except Exception as e: | CODE |
| MEDIUM | scripts/sync_vscode_devcontainer.py | 114 | print(f"Error: Failed to save {file_path}: {e}") | CODE |
| LOW | scripts/sync_vscode_devcontainer.py | 214 | except Exception as e: | CODE |
| LOW | scripts/sync_vscode_devcontainer.py | 254 | except Exception as e: | CODE |
| MEDIUM | scripts/sync_vscode_devcontainer.py | 273 | print("Error: 'recommendations' key not found in .vscode/extensions.json") | CODE |
| LOW | scripts/pypi_nightly_create_tag.py | 51 | except Exception as e: | CODE |
| MEDIUM | scripts/changelog_fetch_prs.py | 63 | print(f"Error running git log: {result.stderr}", file=sys.stderr) | CODE |
| MEDIUM | scripts/changelog_fetch_prs.py | 187 | print("Error: failed to fetch PR metadata from GitHub API.", file=sys.stderr) | CODE |
| LOW | scripts/log_agent_metrics.py | 47 | except Exception: | CODE |
| LOW | scripts/log_agent_metrics.py | 60 | except Exception: | CODE |
| MEDIUM | scripts/changelog_categorize_prs.py | 192 | print(f"Error: input file '{args.input}' not found", file=sys.stderr) | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 57 | print(f"Error: File not found: {pyproject_path}") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 76 | print(f"Error: File not found: {pre_commit_config_path}") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 101 | print(f"Error updating .pre-commit-config.yaml: {e}") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 122 | print("Error: Could not find ruff version in pyproject.toml") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 126 | print("Error: Could not find ruff version in .pre-commit-config.yaml") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 157 | print("Error: Could not find ruff version in pyproject.toml") | CODE |
| MEDIUM | scripts/sync_ruff_version.py | 163 | print("Error: Could not find ruff version in .pre-commit-config.yaml") | CODE |
| MEDIUM | scripts/fetch_flaky_tests.py | 49 | print(f"Error running gh command: {' '.join(args)}", file=sys.stderr) | CODE |
| LOW | lib/streamlit/config.py | 389 | except Exception: # noqa: S110 | CODE |
| LOW | lib/streamlit/config.py | 2858 | except Exception: | CODE |
| LOW | lib/streamlit/config.py | 2961 | except Exception: # noqa: S110 | CODE |
| LOW | lib/streamlit/config.py | 2966 | except Exception: # noqa: S110 | CODE |
| LOW | lib/streamlit/config.py | 552 | except Exception: | STRING |
| LOW | lib/streamlit/dataframe_util.py | 1081 | except Exception: | CODE |
| LOW | lib/streamlit/dataframe_util.py | 1092 | except Exception: | CODE |
| 188 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | e2e_playwright/st_tabs_test.py | 383 | "(elements) => elements.filter(el => el.offsetParent !== null).length" | CODE |
| HIGH⚡ | e2e_playwright/st_audio_test.py | 183 | "el => el.readyState === 4 && Number.isFinite(el.duration) && el.duration > 0" | CODE |
| HIGH | e2e_playwright/st_popover_test.py | 610 | return el === topEl || el.contains(topEl); | STRING |
| HIGH | e2e_playwright/st_sidebar_flicker_test.py | 65 | window.__lastSidebarState = null; | CODE |
| HIGH | e2e_playwright/st_sidebar_flicker_test.py | 81 | window.__sidebarStates.push({ | CODE |
| HIGH | e2e_playwright/st_sidebar_flicker_test.py | 93 | if (this.dataset && this.dataset.testid === 'stSidebar' && name === 'data-collapsed') { | CODE |
| HIGH | e2e_playwright/st_code_test.py | 185 | """(el) => el && el.scrollWidth > el.clientWidth""", | STRING |
| HIGH | e2e_playwright/st_echarts_chart_test.py | 83 | " return c ? getComputedStyle(c).overflowY : null; }" | CODE |
| HIGH | e2e_playwright/st_audio_input_test.py | 592 | window.blobTracking.created.push(url); | CODE |
| HIGH | e2e_playwright/st_audio_input_test.py | 598 | window.blobTracking.revoked.push(url); | CODE |
| HIGH | e2e_playwright/st_pydeck_chart_test.py | 362 | insideChart: Boolean(target && chart?.contains(target)), | STRING |
| HIGH⚡ | e2e_playwright/st_video_test.py | 53 | video_element.evaluate("el => el.readyState >= 3 || el.duration > 0") | CODE |
| HIGH | e2e_playwright/st_layouts_container_directions_test.py | 50 | "el => el && el.scrollWidth > el.clientWidth", | CODE |
| HIGH | e2e_playwright/st_layouts_container_directions_test.py | 63 | "el => el && el.scrollWidth <= el.clientWidth", | CODE |
| HIGH⚡ | e2e_playwright/shared/app_utils.py | 1341 | if (!mutationList || mutationList.length === 0) { | CODE |
| HIGH⚡ | e2e_playwright/shared/app_utils.py | 1351 | window.streamlitPlaywrightDebugConnectionStatuses.push(state); | CODE |
| HIGH | e2e_playwright/shared/app_utils.py | 1411 | if (!mutationList || mutationList.length === 0) { | STRING |
| HIGH | e2e_playwright/shared/app_utils.py | 1476 | return images.every(img => img.complete && img.naturalHeight !== 0); | CODE |
| HIGH | e2e_playwright/shared/app_utils.py | 1625 | if (el.scrollWidth <= el.clientWidth) return false | CODE |
| HIGH | lib/streamlit/dataframe/lazy_df_adapters.py | 56 | if table.schema.equals(schema, check_metadata=False): | CODE |
| HIGH | lib/streamlit/web/skills.py | 214 | ``cd repo && streamlit run sub/app.py`` launch, where ``repo`` is the | STRING |
| HIGH | lib/streamlit/web/skills.py | 216 | otherwise (e.g. ``cd /tmp && streamlit run /proj/app.py``, where ``/tmp`` | STRING |
| HIGH | lib/streamlit/runtime/session_manager.py | 231 | When active session-related methods are left undefined, their default | STRING |
| HIGH | lib/streamlit/runtime/caching/hashing.py | 392 | hash_stacks.current.push(obj) | CODE |
| HIGH | …ta-skill/developing-with-streamlit/scripts/discover.py | 162 | "`python -m venv .venv && source .venv/bin/activate`)" | CODE |
| HIGH⚡ | lib/streamlit/elements/lib/built_in_chart_utils.py | 1388 | return "quantitative" # Pick anything. If undefined, Vega-Lite may hide the axis. | STRING |
| HIGH | lib/tests/streamlit/dataframe_util_test.py | 829 | # if snowflake.snowpark.dataframe.DataFrame def is_snowpark_data_object should return true | COMMENT |
| HIGH | lib/tests/streamlit/components_test.py | 597 | assert df.equals(return_value), "df != return_value" | CODE |
| HIGH⚡ | lib/tests/streamlit/config_test.py | 1034 | '{"key": null}', | CODE |
| HIGH⚡ | lib/tests/streamlit/dataframe/lazy_df_source_test.py | 94 | assert chunk.schema.equals(source.schema) | CODE |
| HIGH | lib/tests/streamlit/web/skills_test.py | 422 | Mirrors ``cd repo && streamlit run sub/app.py`` with no project marker — | STRING |
| HIGH | lib/tests/streamlit/web/skills_test.py | 440 | Mirrors ``cd /tmp && streamlit run /proj/app.py`` — the unrelated cwd | STRING |
| HIGH | …treamlit/web/server/starlette/starlette_routes_test.py | 487 | This guards against a None config (e.g. TOML null) being coerced into | STRING |
| HIGH⚡ | lib/tests/streamlit/runtime/caching/hashing_test.py | 926 | stack.push(BadStr()) | CODE |
| HIGH | lib/tests/streamlit/testing/element_tree_test.py | 683 | assert d.value.equals( | CODE |
| HIGH | lib/tests/streamlit/testing/element_tree_test.py | 1539 | assert at.table[0].value.equals(df) | CODE |
| HIGH⚡ | lib/tests/streamlit/elements/vega_charts_test.py | 4059 | '{"data": {"name": "e49f4eae50f240b9cf1895776f847b5d"}, "mark": {"type": "point"}, "encoding": {"color": | CODE |
| HIGH⚡ | lib/tests/streamlit/elements/vega_charts_test.py | 4063 | '{"data": {"name": "438d17320890cc476723f9301ba57f91"}, "mark": {"type": "bar"}, "encoding": {"fillOpaci | CODE |
| HIGH⚡ | lib/tests/streamlit/elements/vega_charts_test.py | 4067 | '{"data": {"name": "438d17320890cc476723f9301ba57f91"}, "mark": {"type": "bar"}, "encoding": {"fillOpaci | CODE |
| HIGH | lib/tests/streamlit/elements/vega_charts_test.py | 4182 | '{"vconcat": [{"hconcat": [{"mark": {"type": "point"}, "encoding": {"color": {"field": "species", "type" | CODE |
| HIGH | lib/tests/streamlit/elements/vega_charts_test.py | 4183 | '{"vconcat": [{"hconcat": [{"mark": {"type": "point"}, "encoding": {"color": {"field": "species", "type" | CODE |
| HIGH | lib/tests/streamlit/elements/text_area_test.py | 81 | # If a proto property is null, it is not determined by | COMMENT |
| HIGH | lib/tests/streamlit/elements/text_input_test.py | 122 | # If a proto property is null, it is not determined by | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …aywright/bidi_components/session_state_interactions.py | 57 | CODE | |
| LOW | lib/streamlit/config.py | 266 | CODE | |
| LOW | lib/streamlit/config_option.py | 127 | CODE | |
| LOW | lib/streamlit/runtime/state/widgets.py | 47 | CODE | |
| LOW | lib/streamlit/runtime/caching/cache_data_api.py | 445 | CODE | |
| LOW | lib/streamlit/runtime/caching/cache_data_api.py | 458 | CODE | |
| LOW | lib/streamlit/runtime/caching/cache_resource_api.py | 365 | CODE | |
| LOW | lib/streamlit/runtime/caching/cache_resource_api.py | 379 | CODE | |
| LOW | lib/streamlit/elements/media.py | 555 | CODE | |
| LOW | lib/streamlit/elements/media.py | 853 | CODE | |
| LOW | lib/streamlit/elements/media.py | 80 | CODE | |
| LOW | lib/streamlit/elements/media.py | 259 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 797 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 1053 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 1359 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 1707 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 1973 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2004 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2217 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2234 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2250 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2476 | CODE | |
| LOW | lib/streamlit/elements/vega_charts.py | 2516 | CODE | |
| LOW | lib/streamlit/elements/arrow.py | 633 | CODE | |
| LOW | lib/streamlit/elements/arrow.py | 654 | CODE | |
| LOW | lib/streamlit/elements/arrow.py | 675 | CODE | |
| LOW | lib/streamlit/elements/map.py | 90 | CODE | |
| LOW | lib/streamlit/elements/metric.py | 104 | CODE | |
| LOW | lib/streamlit/elements/form.py | 224 | CODE | |
| LOW | lib/streamlit/elements/form.py | 459 | CODE | |
| LOW | lib/streamlit/elements/deck_gl_json_chart.py | 328 | CODE | |
| LOW | lib/streamlit/elements/deck_gl_json_chart.py | 357 | CODE | |
| LOW | lib/streamlit/elements/plotly_chart.py | 428 | CODE | |
| LOW | lib/streamlit/elements/plotly_chart.py | 448 | CODE | |
| LOW | lib/streamlit/elements/plotly_chart.py | 469 | CODE | |
| LOW | lib/streamlit/elements/layouts.py | 118 | CODE | |
| LOW | lib/streamlit/elements/layouts.py | 744 | CODE | |
| LOW | lib/streamlit/elements/layouts.py | 1204 | CODE | |
| LOW | lib/streamlit/elements/layouts.py | 1603 | CODE | |
| LOW | lib/streamlit/elements/image.py | 55 | CODE | |
| LOW | lib/streamlit/elements/lib/built_in_chart_utils.py | 134 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 516 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 696 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 834 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 1010 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 1135 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 2116 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 2363 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 2540 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 2706 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 2873 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 3132 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 3257 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 3273 | CODE | |
| LOW | lib/streamlit/elements/lib/column_types.py | 3289 | CODE | |
| LOW | lib/streamlit/elements/widgets/time_widgets.py | 726 | CODE | |
| LOW | lib/streamlit/elements/widgets/time_widgets.py | 747 | CODE | |
| LOW | lib/streamlit/elements/widgets/time_widgets.py | 768 | CODE | |
| LOW | lib/streamlit/elements/widgets/time_widgets.py | 1039 | CODE | |
| LOW | lib/streamlit/elements/widgets/time_widgets.py | 1183 | CODE | |
| 121 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e_playwright/st_data_editor_config_test.py | 141 | # Check if that the value was submitted | COMMENT |
| LOW | e2e_playwright/st_data_editor_config_test.py | 171 | # Check if that the value was submitted | COMMENT |
| LOW | e2e_playwright/conftest.py | 1394 | # Check if reruns are enabled for this test run | COMMENT |
| LOW | e2e_playwright/conftest.py | 1604 | # Add error to the list of test failures: | COMMENT |
| LOW⚡ | e2e_playwright/st_heading_test.py | 348 | # Check if the page is still scrolled to the top | COMMENT |
| LOW | e2e_playwright/st_datetime_input_test.py | 445 | # Set value to 2028/01/01 which is valid in initial bounds (2010-2030) | COMMENT |
| LOW | e2e_playwright/st_date_input_test.py | 493 | # Set date to 1960/01/01, which is outside of the allowed min date. | COMMENT |
| LOW | e2e_playwright/st_date_input_test.py | 657 | # Set value to 2028/01/01 which is valid in initial bounds (2010-2030) | COMMENT |
| LOW | e2e_playwright/st_plotly_chart_select_test.py | 145 | # Check if the callback was triggered | COMMENT |
| LOW⚡ | e2e_playwright/st_selectbox_test.py | 310 | # Check if value is still initial value: | COMMENT |
| LOW | e2e_playwright/st_altair_chart_multiview_select.py | 62 | # Check if any selection parameter has actual data (non-empty dict/list) | COMMENT |
| LOW | e2e_playwright/st_altair_chart_multiview_select.py | 93 | # Check if any selection parameter has actual data (non-empty dict/list) | COMMENT |
| LOW | e2e_playwright/st_altair_chart_multiview_select.py | 124 | # Check if any selection parameter has actual data (non-empty dict/list) | COMMENT |
| LOW | e2e_playwright/st_altair_chart_multiview_select.py | 159 | # Check if any selection parameter has actual data (non-empty dict/list) | COMMENT |
| LOW⚡ | e2e_playwright/st_data_editor_editing_test.py | 390 | # Check if that the value was submitted | COMMENT |
| LOW | e2e_playwright/st_data_editor_editing_test.py | 498 | # Check if that the value was submitted | COMMENT |
| LOW | e2e_playwright/st_data_editor_editing_test.py | 524 | # Check if that the value was submitted | COMMENT |
| LOW | e2e_playwright/st_dataframe_stable_rendering_test.py | 48 | # Set use_container_width to False: | COMMENT |
| LOW | e2e_playwright/st_status_test.py | 50 | # Check if it has a spinner icon: | COMMENT |
| LOW | e2e_playwright/shared/animation_utils.py | 58 | # Check if the bounding box is entirely outside the viewport | COMMENT |
| LOW | e2e_playwright/shared/dataframe_utils.py | 410 | # Check if dimensions or position changed | COMMENT |
| LOW | .claude/hooks/pre_bash_redirect.py | 88 | # Check if this is a pytest command targeting e2e_playwright | STRING |
| LOW | .claude/hooks/pre_bash_redirect.py | 97 | # Check if command starts with a tool/command that requires `uv run` | STRING |
| LOW | .claude/hooks/post_edit_autofix.sh | 31 | # Check if file exists (might have been deleted) | COMMENT |
| LOW | .claude/hooks/stop_check.sh | 27 | # Check if stop hook already triggered a continuation to prevent infinite loops | COMMENT |
| LOW | scripts/ensure_relative_imports.sh | 25 | # Check if the file has a .ts or .js extension | COMMENT |
| LOW | scripts/ensure_relative_imports.sh | 27 | # Check if the search string does not exist in the file | COMMENT |
| LOW | scripts/snapshot_cleanup.py | 315 | # Check if this snapshot is used | COMMENT |
| LOW | scripts/snapshot_cleanup.py | 343 | # Check if this snapshot is in the disallow list | COMMENT |
| LOW | scripts/pypi_nightly_create_tag.py | 76 | # Verify if version is PEP440 compliant. | COMMENT |
| LOW | .github/workflows/pr-preview.yml | 653 | # Set output to indicate package was built | COMMENT |
| LOW | .github/workflows/playwright-changed-files.yml | 106 | # Check if file is in e2e_playwright directory (including subdirectories) | COMMENT |
| LOW | .github/workflows/playwright-changed-files.yml | 113 | # Check if file still exists (not deleted) | COMMENT |
| LOW | .github/workflows/playwright-changed-files.yml | 129 | # Check if the corresponding test file exists | COMMENT |
| LOW | .github/workflows/playwright-changed-files.yml | 140 | # Check if we've already added this test | COMMENT |
| LOW | .github/workflows/update-emojis-material-icons.yml | 57 | # Check if any files were modified (indicating updates were made) | COMMENT |
| LOW | .github/actions/make_init/action.yml | 107 | # Check if the cached venv has valid symlinks | COMMENT |
| LOW | lib/streamlit/config.py | 977 | # Check if we are running in Linux and DISPLAY is unset | STRING |
| LOW | lib/streamlit/auth_util.py | 459 | # Check if cookie needs to be split | COMMENT |
| LOW | lib/streamlit/source_util.py | 50 | # Open file respecting PEP263 encoding. If no encoding header is | COMMENT |
| LOW | lib/streamlit/config_util.py | 638 | # Check if it's a URL using the url_util helper (only allow http/https schemes by default) | COMMENT |
| LOW | lib/streamlit/config_util.py | 792 | # Check if it's a file path or URL (not just "light" or "dark") | COMMENT |
| LOW | lib/streamlit/watcher/local_sources_watcher.py | 143 | # Check if this is a file in a watched directory | COMMENT |
| LOW | lib/streamlit/web/bootstrap.py | 520 | # Check if we're already in an event loop | COMMENT |
| LOW | lib/streamlit/web/skills.py | 239 | # Check if start_dir or a project ancestor already has agent directories. | COMMENT |
| LOW | lib/streamlit/web/skills.py | 672 | # Check if it's a Streamlit-owned symlink we can replace | COMMENT |
| LOW | lib/streamlit/web/skills.py | 1272 | # Check if running interactively | COMMENT |
| LOW | lib/streamlit/web/cli.py | 414 | # Check if the script contains an ASGI app instance (st.App, FastAPI, Starlette). | COMMENT |
| LOW | …server/starlette/starlette_path_security_middleware.py | 168 | # Check if the path contains unsafe patterns | STRING |
| LOW | lib/streamlit/web/server/starlette/starlette_app.py | 686 | # Check if CLI set the main script path (streamlit run) | COMMENT |
| LOW | lib/streamlit/web/server/starlette/starlette_app.py | 796 | # Check if the runtime was actually started by the parent framework. | COMMENT |
| LOW | lib/streamlit/runtime/state/session_state.py | 1891 | # Check if URL value is empty (e.g., ?foo= with no value) | COMMENT |
| LOW | lib/streamlit/runtime/state/query_params.py | 465 | # Check if any bound params exist | COMMENT |
| LOW | …amlit/runtime/scriptrunner_utils/script_run_context.py | 304 | # Check if this is a same-page rerun BEFORE updating page_script_hash | COMMENT |
| LOW | …ts/templates/apps/dashboard-companies/streamlit_app.py | 416 | # Check if the clicked cell is in the company_name column | COMMENT |
| LOW | lib/streamlit/navigation/page.py | 308 | # Check if page is an external URL | COMMENT |
| LOW | lib/streamlit/components/v2/component_registry.py | 361 | # Check if the existing definition is different and NOT a placeholder. | COMMENT |
| LOW | lib/streamlit/components/v2/manifest_scanner.py | 367 | # Check if this pyproject.toml is for the package we're looking for | COMMENT |
| LOW | lib/streamlit/components/v2/manifest_scanner.py | 393 | # Check if project name matches either the distribution name or the package name | COMMENT |
| LOW | lib/streamlit/components/v2/component_path_utils.py | 106 | # Check if the resolved path is within the package root using | COMMENT |
| 41 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e_playwright/conftest.py | 1333 | CODE | |
| LOW | e2e_playwright/st_sidebar_flicker_test.py | 118 | CODE | |
| LOW | e2e_playwright/custom_components/popular_components.py | 109 | CODE | |
| LOW | e2e_playwright/shared/performance.py | 105 | CODE | |
| LOW | e2e_playwright/shared/stats_reporter.py | 500 | CODE | |
| LOW | scripts/snapshot_cleanup.py | 141 | CODE | |
| LOW | scripts/snapshot_cleanup.py | 239 | CODE | |
| LOW | scripts/slack_notifications.py | 61 | CODE | |
| LOW | scripts/changelog_fetch_prs.py | 136 | CODE | |
| LOW | scripts/changelog_categorize_prs.py | 74 | CODE | |
| LOW | scripts/sync_ruff_version.py | 46 | CODE | |
| LOW | scripts/fetch_flaky_tests.py | 165 | CODE | |
| LOW | lib/streamlit/config.py | 3189 | CODE | |
| LOW | lib/streamlit/dataframe_util.py | 1181 | CODE | |
| LOW | lib/streamlit/dataframe_util.py | 1363 | CODE | |
| LOW | lib/streamlit/logger.py | 32 | CODE | |
| LOW | lib/streamlit/config_util.py | 112 | CODE | |
| LOW | lib/streamlit/config_util.py | 360 | CODE | |
| LOW | lib/streamlit/config_util.py | 391 | CODE | |
| LOW | lib/streamlit/config_util.py | 465 | CODE | |
| LOW | lib/streamlit/config_util.py | 534 | CODE | |
| LOW | lib/streamlit/config_util.py | 755 | CODE | |
| LOW | lib/streamlit/watcher/util.py | 96 | CODE | |
| LOW | lib/streamlit/watcher/local_sources_watcher.py | 127 | CODE | |
| LOW | lib/streamlit/watcher/event_based_path_watcher.py | 400 | CODE | |
| LOW | lib/streamlit/web/bootstrap.py | 277 | CODE | |
| LOW | lib/streamlit/web/skills.py | 633 | CODE | |
| LOW | lib/streamlit/web/skills.py | 709 | CODE | |
| LOW | lib/streamlit/web/skills.py | 1426 | CODE | |
| LOW | lib/streamlit/web/server/app_discovery.py | 123 | CODE | |
| LOW | lib/streamlit/web/server/app_discovery.py | 263 | CODE | |
| LOW | lib/streamlit/web/server/starlette/starlette_server.py | 379 | CODE | |
| LOW | lib/streamlit/web/server/starlette/starlette_server.py | 571 | CODE | |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 438 | CODE | |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 460 | CODE | |
| LOW | …/streamlit/web/server/starlette/starlette_websocket.py | 407 | CODE | |
| LOW | …/streamlit/web/server/starlette/starlette_websocket.py | 432 | CODE | |
| LOW | lib/streamlit/web/server/starlette/starlette_app.py | 509 | CODE | |
| LOW | lib/streamlit/runtime/app_session.py | 1353 | CODE | |
| LOW | lib/streamlit/runtime/app_session.py | 430 | CODE | |
| LOW | lib/streamlit/runtime/app_session.py | 728 | CODE | |
| LOW | lib/streamlit/runtime/credentials.py | 230 | CODE | |
| LOW | lib/streamlit/runtime/metrics_util.py | 547 | CODE | |
| LOW | lib/streamlit/runtime/runtime.py | 666 | CODE | |
| LOW | lib/streamlit/runtime/media_file_manager.py | 145 | CODE | |
| LOW | lib/streamlit/runtime/fragment.py | 595 | CODE | |
| LOW | lib/streamlit/runtime/fragment.py | 403 | CODE | |
| LOW | lib/streamlit/runtime/fragment.py | 465 | CODE | |
| LOW | lib/streamlit/runtime/fragment.py | 640 | CODE | |
| LOW | lib/streamlit/runtime/fragment.py | 668 | CODE | |
| LOW | lib/streamlit/runtime/secrets.py | 431 | CODE | |
| LOW | lib/streamlit/runtime/stats.py | 369 | CODE | |
| LOW | lib/streamlit/runtime/download_data_util.py | 20 | CODE | |
| LOW | lib/streamlit/runtime/state/session_state.py | 282 | CODE | |
| LOW | lib/streamlit/runtime/state/session_state.py | 723 | CODE | |
| LOW | lib/streamlit/runtime/state/session_state.py | 1231 | CODE | |
| LOW | lib/streamlit/runtime/state/session_state.py | 1563 | CODE | |
| LOW | lib/streamlit/runtime/state/session_state.py | 1872 | CODE | |
| LOW | lib/streamlit/runtime/state/query_params.py | 902 | CODE | |
| LOW | lib/streamlit/runtime/state/query_params.py | 768 | CODE | |
| 67 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …elements/CodeBlock/StreamlitSyntaxHighlighter.test.tsx | 148 | const line = "lorem ipsum dolor sit amet\n" | CODE |
| LOW | …elements/CodeBlock/StreamlitSyntaxHighlighter.test.tsx | 148 | const line = "lorem ipsum dolor sit amet\n" | CODE |
| LOW | …ts/elements/ExceptionElement/ExceptionElement.test.tsx | 366 | rerenderWithContexts(<div data-testid="placeholder" />) | CODE |
| LOW | …src/components/widgets/DataFrame/columns/utils.test.ts | 76 | const errorCell = getErrorCell("Foo Error", "Lorem Ipsum Dolor") | CODE |
| LOW | …src/components/widgets/DataFrame/columns/utils.test.ts | 82 | expect(errorCell.errorDetails).toEqual("Lorem Ipsum Dolor") | CODE |
| LOW | …ib/src/components/widgets/TextInput/TextInput.test.tsx | 113 | expect(textInput).toHaveAttribute("placeholder", props.element.placeholder) | CODE |
| LOW | …/lib/src/components/widgets/TextArea/TextArea.test.tsx | 158 | expect(textArea).toHaveAttribute("placeholder", props.element.placeholder) | CODE |
| LOW | …ib/src/components/widgets/ChatInput/ChatInput.test.tsx | 182 | expect(chatInput).toHaveAttribute("placeholder", props.element.placeholder) | CODE |
| LOW | …ib/src/components/widgets/ChatInput/ChatInput.test.tsx | 818 | expect(textarea).toHaveAttribute("placeholder", "Upload a directory") | CODE |
| LOW | …rc/components/widgets/Multiselect/Multiselect.test.tsx | 156 | describe("placeholder", () => { | CODE |
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 361 | "Lorem ipsum dolor amet, consectetur adipiscing elit. Mauris tristique est at " | CODE |
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 371 | "Lorem ipsum dolor amet, consectetur adipiscing elit. Mauris tristique est at " | CODE |
| LOW | e2e_playwright/st_chat_input_test.py | 607 | "Lorem ipsum dolor amet, consectetur adipiscing elit. " | CODE |
| LOW | e2e_playwright/st_chat_input_test.py | 973 | "placeholder", "Initial dynamic chat input" | CODE |
| LOW | e2e_playwright/st_chat_input_test.py | 991 | "placeholder", "Updated dynamic chat input" | CODE |
| LOW | e2e_playwright/auth_test.py | 162 | expect_markdown(app, "John Doe") | CODE |
| LOW⚡ | e2e_playwright/auth_test.py | 174 | text = app.get_by_test_id("stMarkdownContainer").filter(has_text="John Doe") | CODE |
| LOW⚡ | e2e_playwright/auth_test.py | 190 | expect_markdown(app, "John Doe") | CODE |
| LOW | e2e_playwright/mega_tester_app.py | 86 | yield "dolor sit amet" | STRING |
| LOW | e2e_playwright/st_expander.py | 47 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum arcu nisl, tincidunt id " | CODE |
| LOW | e2e_playwright/st_expander.py | 47 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum arcu nisl, tincidunt id " | CODE |
| LOW | e2e_playwright/st_expander.py | 62 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum arcu nisl, tincidunt id " | CODE |
| LOW | e2e_playwright/st_expander.py | 62 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum arcu nisl, tincidunt id " | CODE |
| LOW | e2e_playwright/web_server_test.py | 711 | ['streamlit', 'placeholder', sessionId] | STRING |
| LOW⚡ | e2e_playwright/st_multiselect_test.py | 265 | expect(ms.locator("input")).to_have_attribute("placeholder", "Please select") | CODE |
| LOW⚡ | e2e_playwright/st_multiselect_test.py | 298 | expect(ms.locator("input")).to_have_attribute("placeholder", "No options to select") | CODE |
| LOW | e2e_playwright/st_multiselect_test.py | 556 | "placeholder", "Add options" | CODE |
| LOW | e2e_playwright/st_multiselect_test.py | 599 | "placeholder", "No options to select" | CODE |
| LOW | e2e_playwright/st_altair_chart_title.py | 25 | title="Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 5, | CODE |
| LOW | e2e_playwright/st_altair_chart_title.py | 25 | title="Lorem ipsum dolor sit amet, consectetur adipiscing elit. " * 5, | CODE |
| LOW | e2e_playwright/st_text.py | 25 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore " | CODE |
| LOW | e2e_playwright/st_text.py | 25 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore " | CODE |
| LOW⚡ | e2e_playwright/forward_msg_cache.py | 39 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis neque " | CODE |
| LOW⚡ | e2e_playwright/forward_msg_cache.py | 39 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis neque " | CODE |
| LOW⚡ | e2e_playwright/forward_msg_cache.py | 44 | "pharetra et non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing " | CODE |
| LOW⚡ | e2e_playwright/forward_msg_cache.py | 44 | "pharetra et non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing " | CODE |
| LOW | e2e_playwright/st_table.py | 270 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.", | CODE |
| LOW | e2e_playwright/st_table.py | 270 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.", | CODE |
| LOW | e2e_playwright/st_selectbox_test.py | 502 | expect(selectbox_input).to_have_attribute("placeholder", "Add an option") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 343 | expect(email_input).to_have_attribute("placeholder", "you@example.com") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 350 | expect(url_input).to_have_attribute("placeholder", "https://example.com") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 355 | expect(phone_input).to_have_attribute("placeholder", "+1 234 567 8900") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 360 | expect(search_input).to_have_attribute("placeholder", "Search") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 368 | expect(override_input).to_have_attribute("placeholder", "name@company.com") | CODE |
| LOW⚡ | e2e_playwright/st_text_input_test.py | 372 | override_input.fill("user@example.com") | CODE |
| LOW | e2e_playwright/mega_tester_app_test.py | 501 | expect(app.get_by_text("lorem ipsum", exact=False)).to_be_visible() | CODE |
| LOW | e2e_playwright/mega_tester_app_test.py | 502 | expect(app.get_by_text("dolor sit amet", exact=False)).to_be_visible() | CODE |
| LOW | e2e_playwright/st_write_stream.py | 27 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | e2e_playwright/st_write_stream.py | 27 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut | CODE |
| LOW | e2e_playwright/st_chat_message.py | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tristique est | STRING |
| LOW | e2e_playwright/st_chat_message.py | 51 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris tristique est | STRING |
| LOW | e2e_playwright/st_chat_message.py | 69 | st.write("Lorem ipsum dolor sit amet") | CODE |
| LOW | e2e_playwright/st_chat_message.py | 69 | st.write("Lorem ipsum dolor sit amet") | CODE |
| LOW | e2e_playwright/st_columns.py | 28 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " | CODE |
| LOW | e2e_playwright/st_columns.py | 28 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " | CODE |
| LOW | e2e_playwright/st_heading.py | 60 | lorem_ipsum_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" | CODE |
| LOW | e2e_playwright/st_heading.py | 60 | lorem_ipsum_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit" | CODE |
| LOW | e2e_playwright/shared/oidc_mock_server.py | 132 | "name": "John Doe", | CODE |
| LOW⚡ | …playwright/load_testing/scenarios/many_messages_app.py | 28 | # ~1KB lorem ipsum text block | COMMENT |
| LOW⚡ | …playwright/load_testing/scenarios/many_messages_app.py | 33 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus quis neque " | CODE |
| 42 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …/src/components/widgets/DateInput/styled-components.ts | 567 | // In-range days: stretch to fill td for seamless band | COMMENT |
| MEDIUM | frontend/lib/src/hooks/useScrollToBottom.ts | 87 | // Essentially we are not suppose to be animating cause a scroll | COMMENT |
| MEDIUM | e2e_playwright/st_markdown.py | 552 | # Complex markdown in tooltip - comprehensive test | COMMENT |
| MEDIUM | e2e_playwright/window_config_test.py | 40 | # Inject comprehensive configuration BEFORE the page loads | COMMENT |
| MEDIUM | e2e_playwright/st_audio_input_test.py | 627 | # Use wait_until pattern for async checks as per best practices | STRING |
| MEDIUM⚡ | e2e_playwright/st_data_editor_editing_test.py | 384 | # fill+Enter is a test-harness timing artifact; real typing never hits this | COMMENT |
| MEDIUM | e2e_playwright/shared/skills_install_app.py | 69 | # An agent harness is considered "present" when its home config dir exists. | COMMENT |
| LOW | lib/streamlit/delta_generator.py | 625 | # If the message was not enqueued, just return self since it's a | COMMENT |
| MEDIUM | lib/streamlit/config.py | 1344 | """Port where users should point their browsers in order to connect to the | STRING |
| LOW | lib/streamlit/dataframe_util.py | 1151 | # of the enum members. For other enums, we just return the enum member. | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1199 | # Fail only when the authoritative target failed: a detected harness reads | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1367 | # (harness, project_skills_dir, home_skills_dir, agent_home_dir) - skill dirs | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1369 | # to detect the harness itself independent of Streamlit skills. | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1457 | # (saves 2 isfile calls per absent harness — common on hosted | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1688 | # harness we do not install for (a hand-placed .cursor/skills copy, say) | COMMENT |
| MEDIUM | lib/streamlit/web/skills.py | 1610 | "no_agent", # No AI agent harness on this machine. | CODE |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 218 | # unit, and help text, so we can just use the first one to construct | COMMENT |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 248 | # unit, and help text, so we can just use the first one to fill in | COMMENT |
| MEDIUM | lib/streamlit/runtime/app_session.py | 85 | # metric, and "no agent harness" / "already installed" / "user dismissed" are | COMMENT |
| MEDIUM | lib/streamlit/runtime/backend_operation_handler.py | 299 | # - no agent harness present: nothing would consume the skills. | COMMENT |
| LOW | lib/streamlit/runtime/fragment.py | 671 | # NOTE: We need to call get_script_run_ctx here again and can't just use the | COMMENT |
| MEDIUM | lib/streamlit/runtime/scriptrunner/script_runner.py | 140 | # is designed to leverage our original v1 version of multi-page apps. This | COMMENT |
| LOW | lib/streamlit/runtime/caching/cache_resource_api.py | 976 | # so just use that. | COMMENT |
| LOW | lib/streamlit/connections/snowflake_connection.py | 626 | # If we're running in SiS-on-warehouses, just call get_active_session() and | COMMENT |
| LOW | lib/streamlit/elements/write.py | 442 | # we can just call markdown directly and skip the buffer logic. | COMMENT |
| LOW | lib/streamlit/elements/vega_charts.py | 2681 | # Its enough to just use the names here since they are expected | COMMENT |
| LOW | lib/streamlit/elements/vega_charts.py | 2709 | # If its not used with selections activated, just return | COMMENT |
| LOW | lib/streamlit/elements/dialog_decorator.py | 142 | # We just call it 'title' here though to make the user-doc more friendly as | COMMENT |
| LOW | lib/streamlit/elements/lib/image_utils.py | 526 | # MediaFileManager. For this, we just add the index to the image's "coordinates". | COMMENT |
| LOW | lib/streamlit/elements/lib/built_in_chart_utils.py | 628 | # We can't just call set(col_names) because sets don't have stable ordering, | COMMENT |
| LOW | lib/streamlit/elements/lib/skeleton_placeholder.py | 151 | # Not in a script thread - just return without showing anything | COMMENT |
| MEDIUM | lib/streamlit/elements/widgets/data_editor.py | 1354 | # We also utilize the arrow schema to determine the data kinds of every column. | COMMENT |
| LOW | lib/streamlit/elements/widgets/slider.py | 212 | # as it is in the given datetime object, we just set the tzinfo to UTC and | COMMENT |
| LOW | lib/streamlit/elements/widgets/slider.py | 1116 | # Empty list, so let's just use the outer bounds | STRING |
| MEDIUM | lib/tests/streamlit/config_test.py | 2103 | """Test comprehensive theme inheritance with all option types.""" | STRING |
| MEDIUM | lib/tests/streamlit/config_test.py | 2206 | # Patch both config and config_util os.path.exists for comprehensive mocking | STRING |
| MEDIUM | lib/tests/streamlit/web/skills_test.py | 2931 | # Isolated HOME: an agent harness present, but no skills installed there. | COMMENT |
| LOW⚡ | …lit/components/v2/bidi_component/test_serialization.py | 133 | # Should just return the state as-is | COMMENT |
| MEDIUM | lib/tests/streamlit/elements/checkbox_test.py | 118 | """Test that the checkbox help properly dedents in order to avoid code blocks""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/update_version.py | 99 | def update_files(data: dict[str, str], version: str) -> None: | CODE |
| LOW | scripts/update_name.py | 48 | def update_root_pyproject_toml(project_name: str) -> None: | CODE |
| LOW | scripts/update_name.py | 90 | def _update_pyproject_self_references(project_name: str) -> None: | CODE |
| LOW | scripts/update_name.py | 135 | def update_files(project_name: str, files: dict[str, str]) -> None: | CODE |
| LOW | lib/streamlit/starlette.py | 34 | __all__ = ["App"] | CODE |
| LOW | lib/streamlit/config.py | 128 | def set_option(key: str, value: Any, where_defined: str = _USER_DEFINED) -> None: | CODE |
| LOW | lib/streamlit/config.py | 154 | def set_user_option(key: str, value: Any) -> None: | CODE |
| LOW | lib/streamlit/config.py | 2753 | def _set_option(key: str, value: Any, where_defined: str) -> None: | CODE |
| LOW | lib/streamlit/config.py | 2841 | def _update_config_with_toml(raw_toml: str, where_defined: str) -> None: | CODE |
| LOW | lib/streamlit/config.py | 3185 | def _set_development_mode() -> None: | CODE |
| LOW | lib/streamlit/__init__.py | 176 | def _update_logger() -> None: | CODE |
| LOW | lib/streamlit/column_config.py | 21 | __all__ = [ | CODE |
| LOW | lib/streamlit/logger.py | 32 | def set_log_level(level: str | int) -> None: | CODE |
| LOW | lib/streamlit/logger.py | 86 | def update_formatter() -> None: | CODE |
| LOW | lib/streamlit/config_option.py | 268 | def set_value(self, value: Any, where_defined: str | None = None) -> None: | CODE |
| LOW | lib/streamlit/typing.py | 44 | __all__ = [ | CODE |
| LOW | lib/streamlit/watcher/__init__.py | 23 | __all__ = [ | CODE |
| LOW | lib/streamlit/watcher/local_sources_watcher.py | 82 | def update_watched_pages(self) -> None: | CODE |
| LOW | lib/streamlit/watcher/local_sources_watcher.py | 276 | def update_watched_modules(self) -> None: | CODE |
| LOW | lib/streamlit/web/bootstrap.py | 41 | def _set_up_signal_handler(server: Server) -> None: | CODE |
| LOW | lib/streamlit/web/server/app_discovery.py | 425 | __all__ = ["AppDiscoveryResult", "discover_asgi_app"] | CODE |
| LOW | lib/streamlit/web/server/__init__.py | 21 | __all__ = [ | CODE |
| LOW | lib/streamlit/web/server/starlette/__init__.py | 18 | __all__ = [ | CODE |
| LOW | …treamlit/web/server/starlette/starlette_auth_routes.py | 173 | def set_single_cookie(cookie_name: str, value: str) -> None: | CODE |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 288 | async def _set_cors_headers(request: Request, response: Response) -> None: | CODE |
| LOW | lib/streamlit/web/server/starlette/starlette_routes.py | 822 | async def _set_upload_headers(request: Request, response: Response) -> None: | CODE |
| LOW | lib/streamlit/web/server/starlette/starlette_app.py | 136 | def _set_anyio_thread_limiter() -> None: | CODE |
| LOW | lib/streamlit/web/server/starlette/starlette_app.py | 945 | __all__ = ["App", "create_starlette_app"] | CODE |
| LOW | lib/streamlit/runtime/__init__.py | 42 | __all__ = [ | CODE |
| LOW | lib/streamlit/runtime/runtime.py | 662 | def _set_state(self, new_state: RuntimeState) -> None: | CODE |
| LOW⚡ | lib/streamlit/runtime/pages_manager.py | 89 | def set_current_page_script_hash(self, page_script_hash: PageHash) -> None: | CODE |
| LOW | lib/streamlit/runtime/pages_manager.py | 138 | def _set_pages(self, pages: dict[PageHash, PageInfo]) -> None: | CODE |
| LOW⚡ | lib/streamlit/runtime/state/session_state.py | 254 | def set_widget_from_proto(self, widget_state: WidgetStateProto) -> None: | CODE |
| LOW⚡ | lib/streamlit/runtime/state/session_state.py | 258 | def set_from_value(self, k: str, v: Any) -> None: | CODE |
| LOW⚡ | lib/streamlit/runtime/state/session_state.py | 262 | def set_widget_metadata(self, widget_meta: WidgetMetadata[Any]) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/session_state.py | 396 | def set_key_id_mapping(self, key_id_mapping: dict[str, str]) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/session_state.py | 885 | def set_widgets_from_proto(self, widget_states: WidgetStatesProto) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/session_state.py | 1531 | def _set_widget_metadata(self, widget_metadata: WidgetMetadata[Any]) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/session_state.py | 1548 | def _set_key_widget_mapping(self, widget_id: str, user_key: str) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/__init__.py | 37 | __all__ = [ | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 373 | def _set_item_internal(self, key: str, value: str | Iterable[str]) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 499 | def set_with_no_forward_msg(self, key: str, val: list[str] | str) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 685 | def set_initial_query_params(self, query_string: str) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 696 | def set_initial_query_params_from_current(self) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 745 | def set_corrected_value(self, param_key: str, value: Any, value_type: str) -> None: | CODE |
| LOW | lib/streamlit/runtime/state/query_params.py | 765 | def _set_corrected_value(self, param_key: str, value: Any, value_type: str) -> None: | CODE |
| LOW | lib/streamlit/runtime/scriptrunner/__init__.py | 28 | __all__ = [ | CODE |
| LOW | lib/streamlit/runtime/caching/__init__.py | 102 | __all__ = [ | CODE |
| LOW | lib/streamlit/runtime/caching/storage/__init__.py | 23 | __all__ = [ | CODE |
| LOW | …amlit/runtime/scriptrunner_utils/script_run_context.py | 284 | def set_mpa_v2_page(self, page_script_hash: str) -> None: | CODE |
| LOW | lib/streamlit/testing/v1/__init__.py | 18 | __all__ = ["AppTest", "AppTestError"] | CODE |
| LOW | lib/streamlit/connections/__init__.py | 24 | __all__ = [ | CODE |
| LOW | lib/streamlit/components/v1/__init__.py | 43 | __all__ = [ | CODE |
| LOW | lib/streamlit/components/v1/components.py | 33 | __all__ = [ | CODE |
| LOW | lib/streamlit/components/v2/component_registry.py | 444 | def update_component(self, definition: BidiComponentDefinition) -> None: | CODE |
| LOW | lib/streamlit/components/v2/__init__.py | 587 | __all__ = [ | CODE |
| LOW | lib/streamlit/components/v2/types.py | 311 | __all__ = [ | CODE |
| LOW | lib/streamlit/components/v2/bidi_component/__init__.py | 23 | __all__ = ["BidiComponentMixin", "BidiComponentResult", "ComponentResult"] | CODE |
| LOW | lib/streamlit/elements/spinner.py | 126 | def set_message() -> None: | CODE |
| LOW | lib/streamlit/commands/navigation.py | 87 | def _set_external_url(page_proto: AppPageProto, page: Page) -> None: | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 1715 | # Step 2: Delete the uploaded file | COMMENT |
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 1722 | # Step 3: Verify the upload button still works after the upload + delete cycle | COMMENT |
| LOW | e2e_playwright/st_chat_input_test.py | 1696 | # Step 1: Upload a file using the button | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 220 | # Step 1: interact with a widget while in Alpha (sets widgetMgr to "Alpha") | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 224 | # Step 2: programmatic nav to Beta via session_state | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 229 | # Step 3: interact with widget inside Beta — before the fix this silently | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 361 | # Step 1: EN mode - "apple" is selected, no callback yet | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 367 | # Step 2: switch to ES by clicking the button - format_func changes, options don't | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 414 | # Step 1: select the parent "A" so the child labels reflect the filtered count. | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 420 | # Step 2: select the child "D (1)". | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 426 | # Step 3: clear the parent by clicking "A" again. The child's label count | COMMENT |
| LOW | e2e_playwright/st_pills_test.py | 379 | # Step 3: user selects "naranja" (option B) - callback should fire once | COMMENT |
| LOW | .claude/skills/generating-changelog/SKILL.md | 16 | ## Step 1: Validate input | COMMENT |
| LOW | .claude/skills/generating-changelog/SKILL.md | 33 | ## Step 2: Fetch PR data | COMMENT |
| LOW | .claude/skills/generating-changelog/SKILL.md | 84 | ## Step 5: Present classification for review | COMMENT |
| LOW | .claude/skills/generating-changelog/SKILL.md | 99 | ## Step 6: Read PR descriptions and generate output | COMMENT |
| LOW | .claude/skills/generating-changelog/SKILL.md | 181 | ## Step 7: Final summary | COMMENT |
| LOW | .claude/skills/creating-pull-requests/SKILL.md | 16 | ## Step 1: Choose mode | COMMENT |
| LOW | .claude/skills/creating-pull-requests/SKILL.md | 27 | ## Step 2: Execute git workflow | COMMENT |
| LOW | .claude/skills/creating-pull-requests/SKILL.md | 60 | ## Step 3: Compose and create PR | COMMENT |
| LOW | lib/streamlit/runtime/memory_session_storage.py | 34 | # NOTE: The defaults for maxsize and ttl are chosen arbitrarily for now. These | COMMENT |
| LOW | lib/streamlit/runtime/session_manager.py | 375 | # NOTE: The following methods only need to be overwritten when a concrete | COMMENT |
| LOW | …mlit/.agents/skills/developing-with-streamlit/SKILL.md | 38 | ### Step 1: Locate the Streamlit Source Code (if needed) | COMMENT |
| LOW | …mlit/.agents/skills/developing-with-streamlit/SKILL.md | 80 | ### Step 2: Identify Task Type and Route to Reference | COMMENT |
| LOW | …mlit/.agents/skills/developing-with-streamlit/SKILL.md | 201 | ### Step 3: Apply Guidance to Edit Code | COMMENT |
| LOW | …mlit/.agents/skills/developing-with-streamlit/SKILL.md | 211 | ### Step 4: Check Running Apps and Offer to Run | COMMENT |
| LOW | …sts/streamlit/watcher/event_based_path_watcher_test.py | 659 | # Step 1: Simulate file being created | COMMENT |
| LOW | …sts/streamlit/watcher/event_based_path_watcher_test.py | 676 | # Step 2: Simulate file being modified | COMMENT |
| LOW | …b/tests/streamlit/watcher/polling_path_watcher_test.py | 307 | # Step 1: Simulate file being created | COMMENT |
| LOW | …b/tests/streamlit/watcher/polling_path_watcher_test.py | 318 | # Step 2: Simulate file being modified | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 1715 | # Step 2: Delete the uploaded file | COMMENT |
| LOW⚡ | e2e_playwright/st_chat_input_test.py | 1722 | # Step 3: Verify the upload button still works after the upload + delete cycle | COMMENT |
| LOW | e2e_playwright/st_chat_input_test.py | 1696 | # Step 1: Upload a file using the button | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 220 | # Step 1: interact with a widget while in Alpha (sets widgetMgr to "Alpha") | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 224 | # Step 2: programmatic nav to Beta via session_state | COMMENT |
| LOW⚡ | e2e_playwright/st_tabs_test.py | 229 | # Step 3: interact with widget inside Beta — before the fix this silently | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 361 | # Step 1: EN mode - "apple" is selected, no callback yet | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 367 | # Step 2: switch to ES by clicking the button - format_func changes, options don't | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 414 | # Step 1: select the parent "A" so the child labels reflect the filtered count. | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 420 | # Step 2: select the child "D (1)". | COMMENT |
| LOW⚡ | e2e_playwright/st_pills_test.py | 426 | # Step 3: clear the parent by clicking "A" again. The child's label count | COMMENT |
| LOW | e2e_playwright/st_pills_test.py | 379 | # Step 3: user selects "naranja" (option B) - callback should fire once | COMMENT |
| LOW | …sts/streamlit/watcher/event_based_path_watcher_test.py | 659 | # Step 1: Simulate file being created | COMMENT |
| LOW | …sts/streamlit/watcher/event_based_path_watcher_test.py | 676 | # Step 2: Simulate file being modified | COMMENT |
| LOW | …b/tests/streamlit/watcher/polling_path_watcher_test.py | 307 | # Step 1: Simulate file being created | COMMENT |
| LOW | …b/tests/streamlit/watcher/polling_path_watcher_test.py | 318 | # Step 2: Simulate file being modified | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | e2e_playwright/basic_app_test.py | 44 | # size of web assets low, you can modify this threshold if it's really needed | COMMENT |
| MEDIUM⚡ | e2e_playwright/basic_app_test.py | 96 | # size low, you can modify this threshold if it's really needed, justified, | COMMENT |
| LOW | lib/streamlit/watcher/util.py | 277 | # Don't forget to include a break/return when the thing you're trying to do | STRING |
| MEDIUM | lib/streamlit/elements/write.py | 387 | As mentioned earlier, ``st.write()`` also accepts other data formats, such as | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | lib/tests/streamlit/elements/number_input_test.py | 523 | self.script_run_ctx.session_state._state._new_widget_state.set_widget_from_proto( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | frontend/lib/src/components/elements/Tabs/Tabs.tsx | 215 | // overrides session_state, making tab.open return False for the new tab. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .claude/skills/addressing-pr-review-comments/SKILL.md | 177 | ✅ #2 [chore] (general): Updated README as requested | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e_playwright/st_code.py | 114 | def process_data(data): | CODE |
| LOW | lib/tests/streamlit/runtime/metrics_util_test.py | 390 | def test_function(param1: int, param2: str, param3: float = 0.1) -> str: | CODE |
| LOW | lib/tests/streamlit/runtime/metrics_util_test.py | 573 | def test_function() -> str: | CODE |
| LOW | lib/tests/streamlit/runtime/metrics_util_test.py | 616 | def my_method(self, x: int, y: str) -> None: | CODE |
| LOW | lib/tests/streamlit/runtime/fragment_test.py | 1325 | def my_function(): | CODE |
| LOW | lib/tests/streamlit/elements/file_uploader_test.py | 296 | "file2", "project/utils.py", "text/plain", b"def helper(): pass" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …nts/skills/developing-with-streamlit/references/cli.md | 139 | ### Project scaffolding | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/tests/streamlit/write_test.py | 748 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …nts/widgets/CustomComponent/ComponentInstance.test.tsx | 837 | // // TODO: implement test to check handling of daataframe values | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | e2e_playwright/st_code.py | 123 | # Example usage | COMMENT |