Image annotation with Python. Supports polygon, rectangle, circle, line, point, and AI-assisted annotation.
This report summarizes scanner evidence for wkentaro/labelme, a Python project with 16,214 GitHub stars. SynthScan examined 81,417 lines of code across 275 source files, recording 1517 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 20.3 (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? 1163 finding(s).
Are imports declared and package/API names verified? 218 finding(s).
Are wrappers, guards, and repeated structures necessary? 1279 finding(s).
Which changes need focused human review? 1517 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 1517 distinct pattern matches across 9 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 | tools/artifact_install_smoke.py | 26 | def _check_packaged_resources() -> None: | CODE |
| LOW | tools/artifact_install_smoke.py | 43 | def _check_application_starts() -> None: | CODE |
| LOW | tests/workflow_test.py | 16 | def test_release_without_version_suggests_next_version(*, tmp_path: Path) -> None: | CODE |
| LOW | tests/workflow_test.py | 58 | def test_test_matrix_covers_every_supported_python_version() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 40 | def test_resolve_text_annotation_shape_type( | CODE |
| LOW | tests/unit/_app_test.py | 133 | def test_make_image_too_large_message_explains_allocation_limit( | CODE |
| LOW | tests/unit/_app_test.py | 151 | def test_make_image_too_large_message_accounts_for_bit_depth( | CODE |
| LOW | tests/unit/_app_test.py | 172 | def test_make_image_too_large_message_uses_minimum_gui_depth( | CODE |
| LOW | tests/unit/_app_test.py | 190 | def test_make_image_too_large_message_reports_per_side_limit() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 218 | def test_make_image_too_large_message_rounds_the_need_up( | CODE |
| LOW | tests/unit/_app_test.py | 239 | def test_make_image_too_large_message_is_none_for_undecodable_data() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 244 | def test_make_image_too_large_message_is_none_within_allocation_limit() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 323 | def test_shapes_from_dicts_merges_label_flags( | CODE |
| LOW | tests/unit/_app_test.py | 337 | def test_shapes_from_dicts_warns_once_per_shape_with_a_non_str_label() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 360 | def test_shapes_from_dicts_gives_each_shape_its_own_flags() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 374 | def test_shapes_from_dicts_carries_over_the_shape_fields() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 399 | def test_shape_to_dict_maps_all_fields() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 436 | def test_shape_to_dict_coalesces_optional_flags_and_description( | CODE |
| LOW | tests/unit/_app_test.py | 451 | def test_shape_to_dict_copies_mask() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 465 | def test_shape_to_dict_requires_label() -> None: | CODE |
| LOW | tests/unit/_app_test.py | 505 | def test_resolve_stored_image_path_falls_back_to_absolute( | CODE |
| LOW | tests/unit/_app_test.py | 520 | def test_resolve_stored_image_path_falls_back_across_real_windows_drives() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 8 | def test_compile_label_flags_none_is_empty() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 12 | def test_compile_label_flags_keeps_the_flag_keys_of_a_valid_pattern() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 19 | def test_compile_label_flags_drops_an_uncompilable_pattern() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 23 | def test_compile_label_flags_drops_a_non_str_pattern() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 29 | def test_compile_label_flags_drops_a_bytes_pattern() -> None: | CODE |
| LOW⚡ | tests/unit/_label_flags_test.py | 36 | def test_compile_label_flags_keeps_the_valid_patterns_of_a_mixed_spec() -> None: | CODE |
| LOW | tests/unit/_model_manager_test.py | 59 | def test_queue_continues_after_failure_and_retry_goes_last( | CODE |
| LOW | tests/unit/_model_manager_test.py | 99 | def test_cache_setup_failure_marks_model_as_failed( | CODE |
| LOW | tests/unit/_model_manager_test.py | 114 | def test_cancel_keeps_completed_files_and_quit_discards_queue( | CODE |
| LOW | tests/unit/_model_manager_test.py | 163 | def test_cancel_preserves_blob_completed_before_active_download( | CODE |
| LOW | tests/unit/_model_manager_test.py | 195 | def test_shutdown_interrupts_stalled_download( | CODE |
| LOW | tests/unit/_model_manager_test.py | 221 | def test_shutdown_terminates_download_stalled_during_tls( | CODE |
| LOW | tests/unit/_model_manager_test.py | 253 | def test_failed_shutdown_keeps_active_download_and_queue( | CODE |
| LOW | tests/unit/_model_manager_test.py | 290 | def test_remove_stops_download_before_deleting_files( | CODE |
| LOW | tests/unit/_model_manager_test.py | 320 | def test_existing_files_count_as_downloaded_until_deleted( | CODE |
| LOW | tests/unit/_model_manager_test.py | 341 | def test_progress_supports_files_larger_than_two_gibibytes( | CODE |
| LOW⚡ | tests/unit/_yaml_test.py | 11 | def test_safe_load_parses_string_into_nested_structure() -> None: | CODE |
| LOW⚡ | tests/unit/_yaml_test.py | 15 | def test_safe_load_accepts_file_like_stream() -> None: | CODE |
| LOW⚡ | tests/unit/_yaml_test.py | 19 | def test_safe_load_returns_none_for_empty_string() -> None: | CODE |
| LOW | tests/unit/_yaml_test.py | 32 | def test_safe_load_rejects_unsafe_python_tag(*, payload: str) -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 38 | def test_removed_flag_errors_as_unknown( | CODE |
| LOW⚡ | tests/unit/__main___test.py | 48 | def test_logger_level_choice_is_a_valid_loguru_level(*, level: str) -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 52 | def test_logger_level_rejects_fatal(*, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 60 | def test_output_rejects_json_file_path_case_insensitively( | CODE |
| LOW⚡ | tests/unit/__main___test.py | 120 | def test_parse_list_arg_splits_comma_separated_value( | CODE |
| LOW⚡ | tests/unit/__main___test.py | 126 | def test_parse_list_arg_reads_and_strips_file_lines(*, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 133 | def test_parse_list_arg_splits_value_too_long_to_be_a_path() -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 140 | def test_resolve_config_source_falls_back_to_defaults_on_missing_default_file( | CODE |
| LOW⚡ | tests/unit/__main___test.py | 199 | def test_resolve_config_source_reads_an_explicit_file(*, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/unit/__main___test.py | 208 | def test_resolve_config_source_takes_a_yaml_string_as_overrides( | CODE |
| LOW⚡ | tests/unit/__main___test.py | 217 | def test_logger_io_forwards_stripped_writes_to_debug() -> None: | CODE |
| LOW | tests/unit/__main___test.py | 25 | def test_help_uses_console_script_name( | CODE |
| LOW | tests/unit/__main___test.py | 78 | def test_deprecated_alias_warns_pointing_to_canonical( | CODE |
| LOW | tests/unit/__main___test.py | 98 | def test_canonical_flag_does_not_warn( | CODE |
| LOW | tests/unit/__main___test.py | 163 | def test_resolve_config_source_reads_an_existing_default_file( | CODE |
| LOW | tests/unit/__main___test.py | 174 | def test_resolve_config_source_exits_on_an_explicit_missing_file( | CODE |
| LOW | tests/unit/__main___test.py | 187 | def test_resolve_config_source_exits_on_a_value_too_long_to_be_a_path( | CODE |
| LOW | tests/unit/__main___test.py | 233 | def test_logger_io_is_a_write_only_non_seekable_sink() -> None: | CODE |
| 1081 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 113 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 115 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 203 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 327 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/utils/_qt_test.py | 329 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 88 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 90 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 123 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 125 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 145 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 174 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 176 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 213 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 215 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 273 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 275 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 327 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_canvas_interaction/canvas_test.py | 329 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/widgets/_canvas_interaction/canvas_test.py | 395 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/unit/widgets/_canvas_interaction/canvas_test.py | 405 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 45 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 47 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 59 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 107 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 109 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 171 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 283 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 285 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 343 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 345 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 369 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 414 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 416 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 238 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 77 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 79 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 125 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 127 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 210 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 242 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 244 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 285 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 287 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 332 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 455 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/unit/widgets/_label_dialog/interaction_test.py | 457 | # --------------------------------------------------------------------------- | COMMENT |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/benchmark_undo.py | 3 | CODE | |
| LOW | tools/check_config_migrations.py | 1 | CODE | |
| LOW | tools/artifact_install_smoke.py | 1 | CODE | |
| LOW | tools/artifact_install_smoke.py | 7 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/unit/_app_test.py | 1 | CODE | |
| LOW | tests/unit/_label_flags_test.py | 1 | CODE | |
| LOW | tests/unit/_model_manager_test.py | 1 | CODE | |
| LOW | tests/unit/_yaml_test.py | 1 | CODE | |
| LOW | tests/unit/__main___test.py | 1 | CODE | |
| LOW | tests/unit/__main___test.py | 7 | CODE | |
| LOW | tests/unit/read_image_file_test.py | 1 | CODE | |
| LOW | tests/unit/_shape_test.py | 1 | CODE | |
| LOW | tests/unit/_shape_clipboard_test.py | 1 | CODE | |
| LOW | tests/unit/_locale_test.py | 1 | CODE | |
| LOW | tests/unit/_label_file_test.py | 1 | CODE | |
| LOW | tests/unit/_shape_color_test.py | 1 | CODE | |
| LOW | tests/unit/tools/artifact_install_smoke_test.py | 1 | CODE | |
| LOW | tests/unit/utils/_qt_test.py | 1 | CODE | |
| LOW | tests/unit/utils/util.py | 1 | CODE | |
| LOW | tests/unit/utils/_shape_test.py | 1 | CODE | |
| LOW | tests/unit/utils/_image_test.py | 1 | CODE | |
| LOW | tests/unit/_shape/_merge_test.py | 1 | CODE | |
| LOW | tests/unit/examples/labelme2voc_test.py | 1 | CODE | |
| LOW | tests/unit/examples/utils_test.py | 1 | CODE | |
| LOW | tests/unit/examples/labelme2coco_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/_ai_assist_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/conftest.py | 1 | CODE | |
| LOW | tests/unit/_automation/_osam_session_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/_shape_builders_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/_text_detection_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/_suppression_test.py | 1 | CODE | |
| LOW | tests/unit/_automation/_geometry_test.py | 1 | CODE | |
| LOW | tests/unit/_config/writer_test.py | 1 | CODE | |
| LOW | tests/unit/_config/schema_test.py | 1 | CODE | |
| LOW | tests/unit/_config/migration_test.py | 1 | CODE | |
| LOW | tests/unit/_config/api_test.py | 1 | CODE | |
| LOW | …sts/unit/widgets/_ai_text_to_annotation_widget_test.py | 1 | CODE | |
| LOW | …ts/unit/widgets/_ai_assisted_annotation_widget_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_empty_state_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_canvas_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_list_widget_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_vertex_render_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_tool_bar_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_settings_dialog_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_unique_label_qlist_widget_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_shape_render_test.py | 1 | CODE | |
| LOW | …unit/widgets/_brightness_contrast_dialog/alpha_test.py | 1 | CODE | |
| LOW | …gets/_brightness_contrast_dialog/accessibility_test.py | 1 | CODE | |
| LOW | …/unit/widgets/_brightness_contrast_dialog/i18n_test.py | 1 | CODE | |
| LOW | …nit/widgets/_brightness_contrast_dialog/output_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_zoom_widget/value_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_canvas_interaction/canvas_test.py | 1 | CODE | |
| LOW | …ts/unit/widgets/_canvas_interaction/primitives_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_dialog/interaction_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_dialog/keyboard_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_dialog/updates_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_dialog/accessibility_test.py | 1 | CODE | |
| LOW | tests/unit/widgets/_label_dialog/screen_fit_test.py | 1 | CODE | |
| LOW | tests/e2e/undo_after_label_edit_test.py | 1 | CODE | |
| 154 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/update_translate.py | 13 | def _setup_logging() -> None: | CODE |
| LOW⚡ | tests/unit/utils/_qt_test.py | 118 | def _set_window_text(app: QtWidgets.QApplication, /, *, color: QtGui.QColor) -> None: | CODE |
| LOW | tests/e2e/settings_test.py | 25 | def _set_flag_checked(*, win: MainWindow, name: str) -> None: | CODE |
| LOW | tests/e2e/label_list_canvas_selection_test.py | 361 | def set_group_id_then_accept() -> None: | CODE |
| LOW | labelme/_app.py | 792 | def update_shapes_present_actions() -> None: | STRING |
| LOW | labelme/_app.py | 1022 | def _setup_toolbars(self) -> None: | STRING |
| LOW | labelme/_app.py | 2124 | def set_scroll_value(self, *, orientation: Qt.Orientation, value: float) -> None: | STRING |
| LOW | labelme/_app.py | 2141 | def _set_zoom(self, *, value: float, pos: QtCore.QPointF | None) -> None: | STRING |
| LOW | labelme/_app.py | 2170 | def _set_zoom_to_original(self) -> None: | STRING |
| LOW | labelme/_app.py | 2184 | def set_fit_window_mode(self, value: bool = True, /) -> None: # noqa: FBT001, FBT002 -- QAction.triggered slot | STRING |
| LOW | labelme/_app.py | 2188 | def set_fit_width_mode(self, value: bool = True, /) -> None: # noqa: FBT001, FBT002 -- QAction.triggered slot | STRING |
| LOW | labelme/_app.py | 2831 | def _set_point_prompt_mode(self, *, enabled: bool) -> None: | STRING |
| LOW | labelme/_app.py | 2847 | def _set_setting_value(self, *, key_path: tuple[str, ...], value: object) -> None: | STRING |
| LOW | labelme/_app.py | 3341 | def _update_status_stats(self, mouse_pos: QtCore.QPointF, /) -> None: | STRING |
| LOW | labelme/__main__.py | 54 | def _setup_loguru(*, logger_level: str) -> None: | CODE |
| LOW | labelme/_utils/__init__.py | 18 | __all__ = [ | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 314 | def set_fill_drawing(self, *, value: bool) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 317 | def set_show_labels(self, *, value: bool) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 320 | def set_allow_out_of_bounds_points(self, *, value: bool) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 516 | def set_ai_polygon_detail(self, *, detail: int) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 522 | def set_ai_existing_shape_suppression(self, *, enabled: bool) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_canvas.py | 1890 | def _set_ai_existing_shape_highlights(self, *, shapes: list[Shape]) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 359 | def set_point_size(self, *, point_size: int) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 375 | def set_draft_palette(self, *, palette: Palette) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 502 | def set_ai_model_name(self, *, model_name: str) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 662 | def _update_status(self, *, extra_messages: list[str] | None) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 1604 | def _setup_world_transform(self, *, painter: QtGui.QPainter) -> None: | CODE |
| LOW | labelme/_widgets/_canvas.py | 2100 | def set_shape_visible(self, *, shape: Shape, value: bool) -> None: | CODE |
| LOW | labelme/_widgets/__init__.py | 19 | __all__ = [ | CODE |
| LOW | labelme/_widgets/_integer_slider.py | 46 | def set_value(self, value: int, /) -> None: | CODE |
| LOW | labelme/_widgets/_label_dialog.py | 268 | def set_flag_rules(self, *, flags: dict[str, list[str]] | None) -> None: | CODE |
| LOW | labelme/_widgets/_label_dialog.py | 271 | def _update_flags(self, text: str, /) -> None: | CODE |
| LOW | labelme/_widgets/_label_dialog.py | 292 | def set_predefined_labels(self, *, labels: list[str]) -> None: | CODE |
| LOW | labelme/_widgets/_label_dialog.py | 408 | def _set_flag_checkboxes(self, *, flags: dict[str, bool]) -> None: | CODE |
| LOW | labelme/_widgets/_ai_assisted_annotation_widget.py | 167 | def set_current_model(self, *, model_display: str) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_ai_assisted_annotation_widget.py | 178 | def set_available_models(self, *, available: set[str]) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_ai_assisted_annotation_widget.py | 181 | def set_polygon_detail(self, detail: int, /) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_ai_assisted_annotation_widget.py | 185 | def set_point_prompt_mode(self, *, enabled: bool) -> None: | CODE |
| LOW | labelme/_widgets/_ai_text_to_annotation_widget.py | 139 | def set_model_name(self, *, model_name: str) -> None: | CODE |
| LOW | labelme/_widgets/_ai_text_to_annotation_widget.py | 142 | def set_available_models(self, *, available: set[str]) -> None: | CODE |
| LOW | labelme/_widgets/_model_picker.py | 49 | def set_available_models(self, *, available: set[str]) -> None: | CODE |
| LOW | labelme/_widgets/_model_picker.py | 59 | def set_model_name(self, *, model_name: str) -> None: | CODE |
| LOW | labelme/_widgets/_label_list_widget.py | 122 | def set_shape(self, *, shape: Shape | None) -> None: | CODE |
| LOW | labelme/_widgets/_label_list_widget.py | 125 | def set_label(self, *, text: str, color: tuple[int, int, int]) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 153 | def set_accessible_note(self, note: str, /) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 157 | def set_value(self, *, value: dict[str, list[str]] | None) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 290 | def set_rgb(self, rgb: tuple[int, int, int], /) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_settings_dialog.py | 302 | def set_accessible_note(self, note: str, /) -> None: | CODE |
| LOW⚡ | labelme/_widgets/_settings_dialog.py | 306 | def _update_accessible_description(self) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 507 | def _update_search(self, text: str, /) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 571 | def _set_status(self, message: str, /) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 899 | def set_value(self, *, key_path: tuple[str, ...], value: object) -> None: | CODE |
| LOW | labelme/_widgets/_settings_dialog.py | 1180 | def _set_editor_value(self, *, editor: QtWidgets.QWidget, value: object) -> None: | CODE |
| LOW | labelme/_shape/__init__.py | 20 | __all__ = [ | CODE |
| LOW | labelme/_automation/__init__.py | 15 | __all__ = [ | CODE |
| LOW | labelme/_automation/_ai_assist.py | 46 | def set_model_name(self, model_name: str, /) -> None: | CODE |
| LOW | labelme/_config/__init__.py | 18 | __all__ = ["get_user_config_file", "load_config", "reset_config", "set_overrides"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/unit/utils/_qt_test.py | 273 | keys = [s.toString() for s in action.shortcuts()] | CODE |
| HIGH⚡ | tests/unit/utils/_qt_test.py | 282 | keys = [s.toString() for s in action.shortcuts()] | CODE |
| HIGH | labelme/_app.py | 2520 | logger.warning("image is null, cannot apply zoom") | STRING |
| HIGH | labelme/_widgets/_shape_render.py | 206 | if paths.orientation_arrow.length() > 0: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/check_config_migrations.py | 12 | CODE | |
| LOW | tests/unit/widgets/_canvas_test.py | 425 | CODE | |
| LOW | tests/unit/widgets/_canvas_test.py | 2538 | CODE | |
| LOW | tests/e2e/background_save_test.py | 129 | CODE | |
| LOW | labelme/_app.py | 2912 | CODE | |
| LOW | labelme/_app.py | 3218 | CODE | |
| LOW | labelme/_model_manager.py | 155 | CODE | |
| LOW | labelme/_label_file.py | 255 | CODE | |
| LOW | labelme/_utils/_image.py | 72 | CODE | |
| LOW | labelme/_utils/_shape.py | 33 | CODE | |
| LOW | labelme/_widgets/_canvas.py | 831 | CODE | |
| LOW | labelme/_widgets/_canvas.py | 1961 | CODE | |
| LOW | labelme/_widgets/_canvas.py | 1982 | CODE | |
| LOW | labelme/_widgets/_shape_render.py | 405 | CODE | |
| LOW | labelme/_widgets/_settings_dialog.py | 233 | CODE | |
| LOW | labelme/_widgets/_settings_dialog.py | 667 | CODE | |
| LOW | labelme/_widgets/_settings_dialog.py | 1013 | CODE | |
| LOW | labelme/_widgets/_settings_dialog.py | 1180 | CODE | |
| LOW | examples/utils.py | 83 | CODE | |
| LOW | examples/instance_segmentation/labelme2coco.py | 56 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/check_config_migrations.py | 40 | except Exception as error: | CODE |
| LOW | labelme/_app.py | 209 | except Exception: | CODE |
| LOW | labelme/_app.py | 1355 | except Exception as error: | STRING |
| LOW | labelme/_app.py | 1399 | except Exception as error: | STRING |
| LOW | labelme/_app.py | 1561 | except Exception as e: | STRING |
| LOW | labelme/_model_manager.py | 44 | except Exception as error: | CODE |
| LOW | labelme/_model_manager.py | 100 | except Exception: | CODE |
| LOW | labelme/_model_manager.py | 240 | except Exception as error: | CODE |
| MEDIUM | labelme/_model_manager.py | 83 | def start(self) -> None: | CODE |
| LOW | labelme/__main__.py | 83 | except Exception as e: | CODE |
| LOW | labelme/__main__.py | 375 | except Exception as e: | CODE |
| LOW | labelme/_label_file.py | 251 | except Exception as e: | CODE |
| LOW | labelme/_widgets/_canvas.py | 1785 | except Exception as e: | CODE |
| LOW | labelme/_widgets/_canvas.py | 1830 | except Exception as e: | CODE |
| LOW | labelme/_config/__init__.py | 103 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/conftest.py | 192 | except (BrokenPipeError, ConnectionResetError): | CODE |
| HIGH | tests/e2e/conftest.py | 214 | except RuntimeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | labelme/_utils/_qt.py | 126 | CODE | |
| LOW | labelme/_widgets/_label_dialog.py | 37 | CODE |