OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows, and is dedicated to delivering high quality video editing and animation solutions to the world.
This report presents the forensic synthetic code analysis of OpenShot/openshot-qt, a Python project with 6,058 GitHub stars. SynthScan v2.0 examined 152,314 lines of code across 384 source files, recording 2220 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 20.1 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 2220 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | setup.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | freeze.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | images/generate_cache.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | installer/deploy.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | installer/prune_daily_builds.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | installer/build_server.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | installer/version_parser.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | installer/test-framerates.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/__init__.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/waveform.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/metrics.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/keyframe_scaler.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/generation_queue.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/timeline.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/effect_init.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/version.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/query.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/json_data.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/logger_libopenshot.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/convert_framerate.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/generation_service.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/time_parts.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/updates.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/project_data.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/conversion.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/thumbnail.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/clip_utils.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/logger.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/style_tools.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/assets.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/qt_types.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/proxy_service.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/language.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/settings.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/app.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/exceptions.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/ui_util.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/comfy_client.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/clipboard.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/sentry.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/info.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/title_bar.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/path_utils.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/image_types.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/importers/edl.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/importers/final_cut_pro.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/exporters/edl.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/exporters/final_cut_pro.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/sequences.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/files.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/timeline.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/track.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/keyframe.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/transition.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/marker.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/clip.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/effect.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/classes/legacy/openshot/classes/project.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/tests/test_color_grade_editor.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| HIGH | src/tests/test_files_model_import.py | 0 | @file @brief this file contains the base theme. each theme starts with these settings and overrides certain things. @aut | STRING |
| 136 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | freeze.py | 249 | def find_required_windows_opencv_dlls(seed_binaries, opencv_dlls_by_name): | CODE |
| LOW | freeze.py | 288 | def should_package_source_file(filename): | CODE |
| LOW⚡ | doc/conf.py | 572 | def _builder_configure_latex_fonts(app): | STRING |
| LOW⚡ | doc/conf.py | 575 | def _builder_configure_html_context(app): | STRING |
| LOW | installer/build_server.py | 244 | def run_command_with_exit_code(command, working_dir=None): | CODE |
| LOW | installer/fix_opencv_rpath.py | 56 | def opencv_rpath_dependencies(path): | CODE |
| LOW | installer/fix_opencv_rpath.py | 82 | def rewrite_opencv_dependencies(path, stage_dir): | CODE |
| LOW⚡ | src/qt_api.py | 1035 | def _patch_point_event_methods(cls): | CODE |
| LOW | src/qt_api.py | 239 | def _request_storage_permission(self): | CODE |
| LOW | src/qt_api.py | 786 | def request_android_storage_permission_if_needed(): | CODE |
| LOW | src/qt_api.py | 869 | def get_font_dialog_selection(initial_font=None, parent=None, title=""): | CODE |
| LOW⚡ | src/classes/ui_trace_recorder.py | 259 | def _make_dock_visibility_slot(self, dock): | CODE |
| LOW⚡ | src/classes/ui_trace_recorder.py | 265 | def _on_dock_visibility_changed(self, dock, visible): | CODE |
| LOW | src/classes/generation_queue.py | 56 | def _is_unfinished_meta_batch(history_entry): | CODE |
| LOW | src/classes/generation_queue.py | 84 | def _allow_unfiltered_output_fallback(template_id): | CODE |
| LOW | src/classes/generation_queue.py | 97 | def _find_related_meta_batch_outputs(self, client, history_entry, save_node_ids, template_id=""): | CODE |
| LOW | src/classes/generation_queue.py | 824 | def _on_progress_detail_changed(self, job_id, detail): | CODE |
| LOW | src/classes/json_data.py | 228 | def replace_string_to_absolute(self, match): | CODE |
| LOW | src/classes/json_data.py | 270 | def convert_paths_to_absolute(self, file_path, data): | CODE |
| LOW | src/classes/json_data.py | 287 | def replace_string_to_relative(self, match): | CODE |
| LOW | src/classes/json_data.py | 371 | def convert_paths_to_relative(self, file_path, previous_path, data): | CODE |
| LOW | src/classes/http_client.py | 50 | def configure_ssl_environment(): | CODE |
| LOW⚡ | src/classes/generation_service.py | 255 | def _strip_workflow_display_suffix(name): | CODE |
| LOW⚡ | src/classes/generation_service.py | 262 | def _reserved_generation_stems(self): | CODE |
| LOW⚡ | src/classes/generation_service.py | 604 | def _is_reference_image_placeholder_value(path_text): | CODE |
| LOW⚡ | src/classes/generation_service.py | 612 | def _is_prompt_placeholder_value(text_value): | CODE |
| LOW⚡ | src/classes/generation_service.py | 616 | def _is_lyrics_placeholder_value(text_value): | CODE |
| LOW⚡ | src/classes/generation_service.py | 620 | def _replace_prompt_placeholders(text_value): | CODE |
| LOW | src/classes/generation_service.py | 125 | def refresh_comfy_availability_async(self, timeout=0.5, callback=None): | CODE |
| LOW | src/classes/generation_service.py | 201 | def _prepare_generation_source_path(self, source_file, template_id): | CODE |
| LOW | src/classes/generation_service.py | 298 | def _source_display_root_name(self, source_file): | CODE |
| LOW | src/classes/generation_service.py | 499 | def _prepare_template_workflow( | CODE |
| LOW | src/classes/generation_service.py | 529 | def _resolve_template_local_file(path_text): | CODE |
| LOW | src/classes/generation_service.py | 631 | def _replace_lyrics_placeholders(text_value): | CODE |
| LOW | src/classes/generation_service.py | 1024 | def _selected_generation_targets(self, source_file=None): | CODE |
| LOW | src/classes/generation_service.py | 1038 | def _enqueue_generation_for_file(self, source_file, payload): | CODE |
| LOW | src/classes/generation_service.py | 1175 | def on_generation_job_finished(self, job_id, status): | CODE |
| LOW | src/classes/generation_service.py | 1220 | def _import_generation_outputs(self, job): | CODE |
| LOW | src/classes/generation_service.py | 1376 | def _extract_video_paths_from_text(self, text_payload): | CODE |
| LOW | src/classes/generation_service.py | 1387 | def _looks_like_filesystem_path(self, text_payload): | CODE |
| LOW | src/classes/generation_service.py | 1396 | def _extract_scene_ranges_from_text(self, text_payload): | CODE |
| LOW | src/classes/generation_service.py | 1433 | def _create_scene_split_files(self, source_file_id, scene_ranges): | CODE |
| LOW | src/classes/generation_service.py | 1553 | def _seconds_to_compact_timecode(self, seconds_value, fps_fraction, include_hours=False, include_minutes=False): | CODE |
| LOW | src/classes/generation_service.py | 1579 | def _apply_scene_segment_metadata(self, source_file_id, saved_paths): | CODE |
| LOW | src/classes/generation_service.py | 1632 | def _comfy_output_ref_from_path(self, path_text): | CODE |
| LOW | src/classes/updates.py | 485 | def apply_last_action_to_history(self, previous_value): | CODE |
| LOW | src/classes/project_data.py | 75 | def _effect_has_reader_source(self, effect): | CODE |
| LOW | src/classes/project_data.py | 87 | def _migrate_optimized_asset_paths(self): | CODE |
| LOW | src/classes/project_data.py | 119 | def _drop_obsolete_effect_resource(self, effect): | CODE |
| LOW | src/classes/project_data.py | 787 | def upgrade_project_data_structures(self): | CODE |
| LOW | src/classes/project_data.py | 990 | def _should_move_runtime_assets(self, source_root, default_name): | CODE |
| LOW | src/classes/project_data.py | 1065 | def move_temp_paths_to_project_folder(self, file_path, previous_path=None): | CODE |
| LOW | src/classes/project_data.py | 1342 | def _collect_effect_path_refs(effect): | CODE |
| LOW | src/classes/project_data.py | 1382 | def _first_missing_effect_path(effect): | CODE |
| LOW | src/classes/project_data.py | 1573 | def apply_default_audio_settings(self): | CODE |
| LOW | src/classes/clip_utils.py | 39 | def apply_file_caption_to_clip(clip_data: Any, file_obj: Any, *, dedupe: bool = True) -> bool: | CODE |
| LOW | src/classes/clip_utils.py | 172 | def video_length_to_project_frames( | CODE |
| LOW | src/classes/clip_utils.py | 266 | def _time_curve_length_frames(clip_data: Any, existing_clip: Any) -> Optional[int]: | CODE |
| LOW | src/classes/tabstops.py | 34 | def _dock_uses_auto_tab_order(dock): | CODE |
| LOW | src/classes/tabstops.py | 194 | def _prepare_focusable_containers(root): | CODE |
| 873 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | freeze.py | 512 | except Exception as ex: | CODE |
| LOW | images/generate_cache.py | 125 | except Exception as exc: | CODE |
| LOW | images/generate_cache.py | 326 | except Exception as exc: | CODE |
| LOW⚡ | doc/conf.py | 581 | except Exception: | STRING |
| LOW | installer/deploy.py | 367 | except Exception as ex: | CODE |
| MEDIUM | installer/build_server.py | 98 | print("Error: %s" % line) | CODE |
| LOW | installer/build_server.py | 208 | except Exception as ex: | CODE |
| LOW | installer/build_server.py | 229 | except Exception as ex: | CODE |
| LOW | installer/build_server.py | 738 | except Exception as ex: | CODE |
| MEDIUM | src/qt_api.py | 207 | def open(self): | CODE |
| MEDIUM | src/qt_api.py | 579 | def open(self): | CODE |
| LOW⚡ | src/qt_api.py | 63 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 69 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 72 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 78 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 127 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 130 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 139 | except Exception as exc: | CODE |
| LOW⚡ | src/qt_api.py | 660 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 662 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 972 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 982 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 987 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1018 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1026 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1032 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1053 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1057 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1062 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1075 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1082 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1089 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1096 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1103 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1112 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1128 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1137 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1146 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1155 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1164 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1184 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1193 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1202 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1211 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1220 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1229 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1441 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1450 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1459 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1468 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1477 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1486 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1495 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1504 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1513 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1522 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1533 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1542 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1551 | except Exception: | CODE |
| LOW⚡ | src/qt_api.py | 1560 | except Exception: | CODE |
| 446 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | setup.py | 106 | # ------------------------------------- | COMMENT |
| MEDIUM | setup.py | 114 | # ------------------------------------- | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 61 | # ── Attention seekers ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 143 | # ── Back entrances ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 174 | # ── Back exits ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 205 | # ── Bouncing entrances ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 256 | # ── Bouncing exits ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 289 | # ── Fading entrances ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/animation_presets.py | 360 | # ── Fading exits ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/sequences.py | 33 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/files.py | 34 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/files.py | 65 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/timeline.py | 32 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/track.py | 34 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/keyframe.py | 34 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/transition.py | 34 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/marker.py | 32 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/clip.py | 35 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/effect.py | 34 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/project.py | 37 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/tests/test_timeline_helpers.py | 4691 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | src/tests/test_timeline_helpers.py | 4694 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 41 | # ─── Persistent settings keys ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 286 | # ─── Waveform painter ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 314 | # ── helpers ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 345 | # ── paint ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 426 | # ─── Histogram painter ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 517 | # ─── Vectorscope painter ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 760 | # ─── Audio meter painter ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 827 | # ─── Filter toolbar helpers ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 845 | # ─── Waveform dock content (painter + toolbar) ─────────────────────────────── | COMMENT |
| MEDIUM | src/windows/scope_panel.py | 929 | # ─── Histogram dock content (painter + toolbar) ────────────────────────────── | COMMENT |
| MEDIUM | src/windows/video_widget.py | 2076 | # ================================================================================== | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 2955 | # ── helpers ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3278 | # ── BLUR IN — blur 50→0 + alpha fade ───────────────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3285 | # ── BLUR OUT — alpha fade + blur 0→50 ───────────────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3292 | # ── WIPE IN — Mask effect, brightness 1 → -1 ────────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3300 | # ── WIPE OUT — Mask effect, brightness -1 → 1 ───────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3308 | # ── FOCUS WIPE IN — blur 50→0, then wipe reveals ────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3316 | # ── FOCUS WIPE OUT — wipe hides, blur 0→50 ─────────────── | COMMENT |
| MEDIUM⚡ | src/windows/views/timeline.py | 3324 | # ── POP ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 182 | # ── Animation preset helpers ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1576 | # ── Motion Menu ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1592 | # ── In ▶ ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1634 | # ── Out ▶ ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1676 | # ── Emphasis ▶ ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1691 | # ── Camera ▶ ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1722 | # ── Credits ▶ ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 2992 | # ── RESET (always runs first for non-NONE actions) ───────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3242 | # ── SLIDE IN ────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3260 | # ── SLIDE OUT ───────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3346 | # ── SPIRAL ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3379 | # ── CAMERA: PUSH IN / PULL OUT (zoom, SCALE_CROP) ────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3385 | # ── CAMERA: PAN (axis-aware SCALE_CROP framing) ─────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3398 | # ── CAMERA: KEN BURNS (axis-aware zoom + drift) ─────────── | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3429 | # ── CREDITS (full scroll, SCALE_CROP) ───────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline_backend/enums.py | 66 | # ── In ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline_backend/enums.py | 96 | # ── Out ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline_backend/enums.py | 126 | # ── Emphasis ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/windows/views/timeline_backend/enums.py | 138 | # ── Camera ─────────────────────────────────────────────────────────────── | COMMENT |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 86 | CODE | |
| LOW | freeze.py | 169 | CODE | |
| LOW | freeze.py | 738 | CODE | |
| LOW | images/generate_cache.py | 290 | CODE | |
| LOW | doc/conf.py | 354 | CODE | |
| LOW | installer/deploy.py | 57 | CODE | |
| LOW | installer/fix_qt5_rpath.py | 14 | CODE | |
| LOW | installer/fix_qt5_rpath.py | 56 | CODE | |
| LOW | installer/build_server.py | 167 | CODE | |
| LOW | installer/build_server.py | 311 | CODE | |
| LOW | src/qt_api.py | 678 | CODE | |
| LOW | src/qt_api.py | 957 | CODE | |
| LOW | src/qt_api.py | 2480 | CODE | |
| LOW | src/qt_api.py | 2608 | CODE | |
| LOW | src/qt_api.py | 280 | CODE | |
| LOW | src/qt_api.py | 384 | CODE | |
| LOW | src/qt_api.py | 579 | CODE | |
| LOW | src/qt_api.py | 313 | CODE | |
| LOW | src/qt_api.py | 618 | CODE | |
| LOW | src/launch.py | 120 | CODE | |
| LOW | src/classes/color_presets.py | 109 | CODE | |
| LOW | src/classes/ui_trace_recorder.py | 279 | CODE | |
| LOW | src/classes/ui_trace_recorder.py | 352 | CODE | |
| LOW | src/classes/keyframe_scaler.py | 57 | CODE | |
| LOW | src/classes/generation_queue.py | 166 | CODE | |
| LOW | src/classes/query.py | 297 | CODE | |
| LOW | src/classes/query.py | 387 | CODE | |
| LOW | src/classes/json_data.py | 228 | CODE | |
| LOW | src/classes/json_data.py | 287 | CODE | |
| LOW | src/classes/http_client.py | 145 | CODE | |
| LOW | src/classes/http_client.py | 174 | CODE | |
| LOW | src/classes/generation_service.py | 499 | CODE | |
| LOW | src/classes/generation_service.py | 990 | CODE | |
| LOW | src/classes/generation_service.py | 1108 | CODE | |
| LOW | src/classes/generation_service.py | 1175 | CODE | |
| LOW | src/classes/generation_service.py | 1220 | CODE | |
| LOW | src/classes/updates.py | 288 | CODE | |
| LOW | src/classes/project_data.py | 126 | CODE | |
| LOW | src/classes/project_data.py | 203 | CODE | |
| LOW | src/classes/project_data.py | 377 | CODE | |
| LOW | src/classes/project_data.py | 444 | CODE | |
| LOW | src/classes/project_data.py | 540 | CODE | |
| LOW | src/classes/project_data.py | 787 | CODE | |
| LOW | src/classes/project_data.py | 1065 | CODE | |
| LOW | src/classes/project_data.py | 1294 | CODE | |
| LOW | src/classes/project_data.py | 1486 | CODE | |
| LOW | src/classes/project_data.py | 1573 | CODE | |
| LOW | src/classes/project_data.py | 1342 | CODE | |
| LOW | src/classes/project_data.py | 1361 | CODE | |
| LOW | src/classes/thumbnail.py | 60 | CODE | |
| LOW | src/classes/clip_utils.py | 39 | CODE | |
| LOW | src/classes/clip_utils.py | 295 | CODE | |
| LOW | src/classes/tabstops.py | 170 | CODE | |
| LOW | src/classes/tabstops.py | 380 | CODE | |
| LOW | src/classes/assets.py | 34 | CODE | |
| LOW | src/classes/proxy_service.py | 55 | CODE | |
| LOW | src/classes/proxy_service.py | 127 | CODE | |
| LOW | src/classes/proxy_service.py | 206 | CODE | |
| LOW | src/classes/proxy_service.py | 303 | CODE | |
| LOW | src/classes/proxy_service.py | 364 | CODE | |
| 211 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | doc/conf.py | 7 | # This file is execfile()d with the current directory set to its | COMMENT |
| MEDIUM | installer/deploy.py | 185 | # Create a new release if one if missing (for each repo) | COMMENT |
| MEDIUM | src/classes/timeline.py | 52 | # Create an instance of a libopenshot Timeline object | COMMENT |
| MEDIUM | src/classes/convert_framerate.py | 34 | # Define a tolerance in frames (e.g., 1 to 3 frames) | COMMENT |
| MEDIUM | src/classes/project_data.py | 536 | # Create a scaler instance, and scale all key-frames | COMMENT |
| MEDIUM | src/classes/app.py | 254 | # Create main window | COMMENT |
| MEDIUM | src/classes/legacy/openshot/classes/keyframe.py | 32 | """This class represents a media clip on the timeline.""" | STRING |
| MEDIUM | src/classes/legacy/openshot/classes/transition.py | 32 | """This class represents a media clip on the timeline.""" | STRING |
| MEDIUM | src/classes/legacy/openshot/classes/marker.py | 30 | """This class represents a marker (i.e. a reference point) on the timeline.""" | STRING |
| MEDIUM | src/classes/legacy/openshot/classes/clip.py | 33 | """This class represents a media clip on the timeline.""" | STRING |
| MEDIUM | src/classes/legacy/openshot/classes/effect.py | 32 | """This class represents a media clip on the timeline.""" | STRING |
| MEDIUM | src/language/generate_translations.py | 392 | header_text = header_text + '# This file is distributed under the same license as OpenShot.\n' | CODE |
| MEDIUM | src/windows/main_window.py | 2165 | # Create a list of QKeySequence objects from the parts | COMMENT |
| MEDIUM | src/windows/main_window.py | 3719 | # Create a new recent menu | COMMENT |
| MEDIUM | src/windows/main_window.py | 3797 | # Create a new restore menu | COMMENT |
| MEDIUM | src/windows/main_window.py | 5038 | # Create main window base class | COMMENT |
| MEDIUM | src/windows/main_window.py | 5140 | # Create the timeline sync object (used for previewing timeline) | COMMENT |
| MEDIUM | src/windows/title_editor.py | 263 | # Create a temp file for the thumbnail image | COMMENT |
| MEDIUM | src/windows/title_editor.py | 267 | # Create a clip object and get the reader | COMMENT |
| MEDIUM | src/windows/title_editor.py | 302 | # Create the final pixmap filled with the label's background color | COMMENT |
| MEDIUM | src/windows/title_editor.py | 861 | # Define the title and both platform-specific messages | COMMENT |
| MEDIUM | src/windows/region.py | 399 | # Create an instance of a libopenshot Timeline object | COMMENT |
| MEDIUM | src/windows/preferences.py | 70 | # Define the custom category order | COMMENT |
| MEDIUM | src/windows/add_to_timeline.py | 228 | # Create a clip | COMMENT |
| MEDIUM | src/windows/export.py | 1403 | # Create a list to store the settings in order | COMMENT |
| MEDIUM | src/windows/video_widget.py | 294 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/windows/preview_thread.py | 585 | # Create an instance of a libopenshot Timeline object | COMMENT |
| MEDIUM | src/windows/models/files_model.py | 266 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/windows/models/properties_model.py | 406 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 613 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 752 | # Create a new clip (if not exists) | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 1198 | # Create a new transition (if not exists) | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 3796 | # Create a transaction ID for all operations in this function (if not provided) | COMMENT |
| MEDIUM | src/windows/views/timeline.py | 5400 | # Create a new Clip object with the file path | COMMENT |
| MEDIUM | src/windows/views/files_treeview.py | 329 | # Create a composite pixmap to hold the icons in a row | COMMENT |
| MEDIUM | src/windows/views/zoom_slider.py | 64 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/windows/views/properties_tableview.py | 471 | # Create a fake event object that provides the position we want | COMMENT |
| MEDIUM | src/windows/views/files_listview.py | 347 | # Create a composite pixmap to hold the icons in a row | COMMENT |
| MEDIUM | src/windows/views/blender_listview.py | 273 | # Create a folder (if it does not exist) | COMMENT |
| MEDIUM | src/windows/views/timeline_backend/qwidget/base.py | 902 | # This method is invoked by the UpdateManager each time a change happens (i.e UpdateInterface) | COMMENT |
| MEDIUM | src/themes/base.py | 224 | # Create a divider | COMMENT |
| MEDIUM | src/themes/cosmic/theme.py | 792 | # Create a transparent spacer widget | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | src/qt_api.py | 659 | uri_str = new_uri.toString() | CODE |
| HIGH | src/qt_api.py | 343 | uri_strings = [u.toString() for u in uris] | CODE |
| HIGH | src/qt_api.py | 631 | uri_str = uri.toString() | CODE |
| HIGH | src/tests/test_optimized_preview_menu.py | 68 | self.actionOptimizedPreviewDeleteAndUnlink = QAction("Delete && Unlink", self) | CODE |
| HIGH | src/windows/main_window.py | 2220 | log.warning(f"Duplicate shortcut {key_seq_obj.toString()} detected for {base_method_name}. S | CODE |
| HIGH | src/windows/main_window.py | 4366 | self.actionOptimizedPreviewDeleteAndUnlink = QAction(_("Delete && Unlink"), self) | CODE |
| HIGH⚡ | src/windows/views/timeline.py | 5119 | self.run_js(JS_SCOPE_SELECTOR + ".selectClip('{}', {}, null);".format(item_id, clear_js)) | CODE |
| HIGH⚡ | src/windows/views/timeline.py | 5121 | self.run_js(JS_SCOPE_SELECTOR + ".selectTransition('{}', {}, null);".format(item_id, clear_js)) | CODE |
| HIGH⚡ | src/windows/views/timeline.py | 5123 | self.run_js(JS_SCOPE_SELECTOR + ".selectEffect('{}', {}, null);".format(item_id, clear_js)) | CODE |
| HIGH | src/windows/views/timeline.py | 1981 | (_("Freeze && Zoom"), MenuTime.FREEZE_ZOOM) | CODE |
| HIGH | src/windows/views/timeline.py | 5104 | self.run_js(JS_SCOPE_SELECTOR + ".selectClipRipple('{}', false, null);".format(item_id)) | CODE |
| HIGH | src/windows/views/timeline.py | 5106 | self.run_js(JS_SCOPE_SELECTOR + ".selectTransitionRipple('{}', false, null);".format(item_id)) | CODE |
| HIGH | src/windows/views/optimized_preview_menu.py | 103 | optimized_menu, win, "actionOptimizedPreviewDeleteAndUnlink", _("Delete && Unlink"), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 33 | CODE | |
| LOW | freeze.py | 754 | CODE | |
| LOW | doc/youtube_directive.py | 10 | CODE | |
| LOW | doc/youtube_directive.py | 16 | CODE | |
| LOW | doc/youtube_directive.py | 17 | CODE | |
| LOW | doc/youtube_directive.py | 22 | CODE | |
| LOW | doc/youtube_directive.py | 22 | CODE | |
| LOW | doc/youtube_directive.py | 22 | CODE | |
| LOW | doc/youtube_directive.py | 22 | CODE | |
| LOW | doc/youtube_directive.py | 23 | CODE | |
| LOW | doc/youtube_directive.py | 24 | CODE | |
| LOW | doc/conf.py | 43 | CODE | |
| LOW | doc/conf.py | 52 | CODE | |
| LOW | src/launch.py | 63 | CODE | |
| LOW | src/launch.py | 94 | CODE | |
| LOW | src/classes/metrics.py | 29 | CODE | |
| LOW | src/classes/project_data.py | 31 | CODE | |
| LOW | src/classes/language.py | 38 | CODE | |
| LOW | src/classes/settings.py | 35 | CODE | |
| LOW | src/classes/ui_util.py | 48 | CODE | |
| LOW | src/classes/info.py | 141 | CODE | |
| LOW | src/classes/camera_motion.py | 20 | CODE | |
| LOW | src/windows/main_window.py | 3677 | CODE | |
| LOW | src/windows/region.py | 29 | CODE | |
| LOW | src/windows/region.py | 30 | CODE | |
| LOW | src/windows/region.py | 41 | CODE | |
| LOW | src/windows/region.py | 41 | CODE | |
| LOW | src/windows/region.py | 45 | CODE | |
| LOW | src/windows/profile.py | 29 | CODE | |
| LOW | src/windows/profile.py | 33 | CODE | |
| LOW | src/windows/preferences.py | 44 | CODE | |
| LOW | src/windows/animated_title.py | 33 | CODE | |
| LOW | src/windows/export.py | 53 | CODE | |
| LOW | src/windows/process_effect.py | 51 | CODE | |
| LOW | src/windows/color_picker.py | 31 | CODE | |
| LOW | src/windows/video_widget.py | 46 | CODE | |
| LOW | src/windows/models/credits_model.py | 35 | CODE | |
| LOW | src/windows/models/properties_model.py | 40 | CODE | |
| LOW | src/windows/models/effects_model.py | 30 | CODE | |
| LOW | src/windows/models/effects_model.py | 34 | CODE | |
| LOW | src/windows/views/timeline.py | 42 | CODE | |
| LOW | src/windows/views/timeline.py | 134 | CODE | |
| LOW | src/windows/views/timeline.py | 134 | CODE | |
| LOW | src/windows/views/timeline.py | 134 | CODE | |
| LOW | src/windows/views/timeline.py | 134 | CODE | |
| LOW | src/windows/views/tutorial.py | 30 | CODE | |
| LOW | src/windows/views/add_to_timeline_treeview.py | 28 | CODE | |
| LOW | src/windows/views/blender_listview.py | 44 | CODE | |
| LOW | src/windows/views/blender_listview.py | 47 | CODE | |
| LOW | src/windows/views/blender_listview.py | 51 | CODE | |
| LOW | src/windows/views/blender_listview.py | 51 | CODE | |
| LOW | src/windows/views/timeline_backend/__init__.py | 12 | CODE | |
| LOW | src/windows/views/timeline_backend/__init__.py | 27 | CODE | |
| LOW | src/windows/views/timeline_backend/__init__.py | 39 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 28 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 29 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 30 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 31 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 32 | CODE | |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 33 | CODE | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | installer/build-mac-dmg.sh | 12 | # Set path to app bundle | COMMENT |
| LOW | src/classes/waveform.py | 112 | # Open file and access audio data (if audio data is found, otherwise return) | COMMENT |
| LOW | src/classes/metrics.py | 178 | # Check if the user wants to send metrics and errors | COMMENT |
| LOW | src/classes/project_data.py | 280 | # Set parent to the last set obj (if not final iteration) | COMMENT |
| LOW | src/classes/project_data.py | 503 | # Check if paths are all valid | COMMENT |
| LOW | src/classes/tabstops.py | 52 | # Check if this tab bar contains dock titles | COMMENT |
| LOW | src/classes/language.py | 89 | # Check if the language preference is something other than "Default" | COMMENT |
| LOW⚡ | src/profiles/definitions/manage.py | 269 | # Check if spherical attribute should be included | COMMENT |
| LOW | src/profiles/definitions/manage.py | 285 | # Write file | COMMENT |
| LOW | src/profiles/definitions/manage.py | 301 | # Write file with description updated for uniqueness | COMMENT |
| LOW | src/windows/main_window.py | 317 | # Check if it already exists | COMMENT |
| LOW | src/windows/main_window.py | 483 | # Check if filesView has focus | COMMENT |
| LOW | src/windows/main_window.py | 700 | # Set cursor to waiting | COMMENT |
| LOW | src/windows/main_window.py | 1643 | # Set MaxSize to full project resolution and clear cache so we get a full resolution frame | COMMENT |
| LOW | src/windows/main_window.py | 1648 | # Check if file exists, if it does, get the lastModified time | COMMENT |
| LOW | src/windows/main_window.py | 4472 | # Check if filesView has focus | COMMENT |
| LOW | src/windows/main_window.py | 4725 | # Check if event type is a shortcut override (keyboard shortcut triggered) | COMMENT |
| LOW | src/windows/title_editor.py | 223 | # Check if the requested font is available | COMMENT |
| LOW | src/windows/add_to_timeline.py | 102 | # Check if selected_index is within valid range | COMMENT |
| LOW | src/windows/add_to_timeline.py | 135 | # Check if selected_index is within valid range | COMMENT |
| LOW | src/windows/export.py | 1068 | # Check if filename is valid (by creating a blank file in a temporary place) | COMMENT |
| LOW | src/windows/export.py | 1304 | # Check if we need to bail out | COMMENT |
| LOW | src/windows/export.py | 1427 | # Append the setting to the list | COMMENT |
| LOW | src/windows/export.py | 1446 | # Iterate over the list of settings and apply them in order | COMMENT |
| LOW | src/windows/cutting.py | 633 | # Check if starting frame less than end frame | COMMENT |
| LOW | src/windows/cutting.py | 670 | # Check if ending frame greater than start frame | COMMENT |
| LOW | src/windows/preview_thread.py | 70 | # Check if we are at the end of the timeline | COMMENT |
| LOW | src/windows/models/blender_model.py | 98 | # Check if thumb exists | COMMENT |
| LOW | src/windows/models/properties_model.py | 1619 | # Check if filter was changed (if so, wipe previous model data) | COMMENT |
| LOW | src/windows/views/timeline.py | 1375 | # Check if the current clip starts after the found_end, indicating a gap | COMMENT |
| LOW | src/windows/views/timeline.py | 4770 | # Check if there is a gap between the end of the last clip/transition and the start of the current one | COMMENT |
| LOW | src/windows/views/find_file.py | 173 | # Check if path exists | COMMENT |
| LOW | src/windows/views/files_treeview.py | 307 | # Check if there are any selected items | COMMENT |
| LOW | src/windows/views/files_treeview.py | 380 | # Set cursor to waiting | COMMENT |
| LOW | src/windows/views/properties_tableview.py | 451 | # Check if this is a dropdown/choice property | COMMENT |
| LOW | src/windows/views/properties_tableview.py | 1844 | # Check if the list needs to be divided into sub-menus | COMMENT |
| LOW | src/windows/views/files_listview.py | 325 | # Check if there are any selected items | COMMENT |
| LOW | src/windows/views/files_listview.py | 398 | # Set cursor to waiting | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | freeze.py | 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | COMMENT |
| LOW | freeze.py | 41 | # sudo dylibbundler -od -of -b -x ~/apps/rsvg/rsvg-convert -d ./rsvg-libs/ -p @executable_path/rsvg-libs/ | COMMENT |
| LOW | doc/conf.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | doc/conf.py | 81 | master_doc = 'index' | COMMENT |
| LOW | doc/conf.py | 101 | # Usually you set "language" from the command line for these cases. | COMMENT |
| LOW | doc/conf.py | 121 | # | COMMENT |
| LOW | doc/conf.py | 161 | # Theme options are theme-specific and customize the look and feel of a theme | COMMENT |
| LOW | doc/conf.py | 181 | # | COMMENT |
| LOW | doc/conf.py | 201 | # directly to the root of the documentation. | COMMENT |
| LOW | doc/conf.py | 221 | # template names. | COMMENT |
| LOW | doc/conf.py | 241 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. | COMMENT |
| LOW | doc/conf.py | 261 | # 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh' | COMMENT |
| LOW | doc/conf.py | 281 | latex_elements = { | COMMENT |
| LOW | doc/conf.py | 401 | COMMENT | |
| LOW | doc/conf.py | 421 | # | COMMENT |
| LOW | doc/conf.py | 461 | # | COMMENT |
| LOW | doc/conf.py | 481 | epub_author = author | COMMENT |
| LOW | doc/conf.py | 501 | # epub_scheme = '' | COMMENT |
| LOW | doc/conf.py | 521 | # The format is a list of tuples containing the path and title. | COMMENT |
| LOW | doc/conf.py | 541 | # Choose between 'default' and 'includehidden'. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/windows/views/timeline_backend/paint/keyframepanel.py | 253 | can_add = isinstance(prop, dict) and not prop.get("placeholder") | CODE |
| LOW | …/windows/views/timeline_backend/paint/keyframepanel.py | 274 | if prop.get("placeholder") or not draw_timeline: | CODE |
| LOW⚡ | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 94 | props = [{"display_name": label, "points": [], "placeholder": True}] | CODE |
| LOW⚡ | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 99 | "context": {"placeholder": reason}, | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 43 | if isinstance(context, dict) and context.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 470 | if prop.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 625 | if isinstance(prop, dict) and not prop.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 1720 | if not isinstance(prop, dict) or prop.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 2182 | and target_info.get("context", {}).get("placeholder") | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 2269 | if isinstance(track_context, dict) and track_context.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 2379 | if isinstance(context, dict) and context.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 2391 | if not isinstance(prop, dict) or prop.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3173 | props = [{"display_name": label_text, "points": [], "placeholder": True}] | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3178 | "context": {"placeholder": reason}, | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3292 | placeholder_context["placeholder"] = "no-keyframes" | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3297 | "placeholder": True, | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3441 | placeholder_prop = {"display_name": placeholder_label, "points": [], "placeholder": True} | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3446 | "context": {"item_type": "multi", "track": key, "placeholder": "no-keyframes"}, | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3482 | if context.get("placeholder"): | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3486 | context.get("placeholder"), | CODE |
| LOW | …ndows/views/timeline_backend/qwidget/keyframe_panel.py | 3514 | if isinstance(context, dict) and context.get("placeholder"): | CODE |
| LOW | src/windows/views/timeline_backend/qwidget/base.py | 3665 | if isinstance(prop, dict) and prop.get("key") is not None and not prop.get("placeholder") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/qt_api.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/qt_api.py | 2666 | __all__ = [ | CODE |
| LOW | src/launch.py | 69 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/classes/clip_utils.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows/views/menu.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/windows/views/timeline_backend/paint/__init__.py | 41 | __all__ = [ | CODE |
| LOW | src/windows/views/timeline_backend/qwidget/__init__.py | 51 | __all__ = [ | CODE |
| LOW | src/windows/views/timeline_backend/geometry/__init__.py | 45 | __all__ = ["Geometry"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | images/generate_cache.py | 253 | def run_task(task, skip_existing=False): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/classes/generation_service.py | 499 | CODE |