A community-maintained Python framework for creating mathematical animations.
This report summarizes scanner evidence for ManimCommunity/manim, a Python project with 41,400 GitHub stars. SynthScan examined 106,510 lines of code across 430 source files, recording 1793 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 18.1 (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? 1015 finding(s).
Are imports declared and package/API names verified? 501 finding(s).
Are wrappers, guards, and repeated structures necessary? 1194 finding(s).
Which changes need focused human review? 1793 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 1793 distinct pattern matches across 19 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 | tests/test_linear_transformation_scene.py | 6 | def test_ghost_vectors_len_and_types(): | CODE |
| LOW | tests/test_camera.py | 20 | def test_movingcamera_auto_zoom(): | CODE |
| LOW | tests/test_camera.py | 43 | def test_auto_stroke_style_does_not_inherit_previous_style(styled_kwargs): | CODE |
| LOW | tests/conftest.py | 57 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW | tests/test_release_script.py | 9 | def test_merge_changelog_preserves_edits_but_uses_generated_categories(): | CODE |
| LOW | tests/test_release_script.py | 45 | def test_merge_changelog_keeps_release_and_contributor_entries_separate(): | STRING |
| LOW | tests/test_release_script.py | 78 | def test_include_extra_pull_requests_adds_other_changes_category(monkeypatch): | STRING |
| LOW | tests/test_release_script.py | 103 | def test_include_extra_pull_requests_skips_existing_pr(monkeypatch): | STRING |
| LOW | tests/test_release_script.py | 117 | def test_merge_changelog_without_matching_entries_is_unchanged(): | STRING |
| LOW | tests/test_release_script.py | 126 | def test_format_github_release_notes_removes_docs_metadata_and_converts_roles(): | STRING |
| LOW | tests/assert_utils.py | 109 | def assert_shallow_dict_compare(a: dict, b: dict, message_start: str) -> None: | CODE |
| LOW⚡ | tests/test_config.py | 100 | def test_resolve_session_output(config, format, expected_format): | CODE |
| LOW⚡ | tests/test_config.py | 106 | def test_transparent_auto_output_resolves_to_mov(config): | CODE |
| LOW⚡ | tests/test_config.py | 116 | def test_only_automatic_video_output_allows_still_fallback(config): | CODE |
| LOW⚡ | tests/test_config.py | 124 | def test_still_fallback_requires_video_output(): | CODE |
| LOW⚡ | tests/test_config.py | 134 | def test_explicit_no_output_is_not_dry_run(config): | CODE |
| LOW⚡ | tests/test_config.py | 143 | def test_live_preview_auto_output_resolves_to_none(config): | CODE |
| LOW⚡ | tests/test_config.py | 201 | def test_save_last_frame_resolves_to_still_output(config): | CODE |
| LOW⚡ | tests/test_config.py | 208 | def test_save_last_frame_alias_works_with_tempconfig(config): | CODE |
| LOW⚡ | tests/test_config.py | 218 | def test_sections_require_video_output(config): | CODE |
| LOW⚡ | tests/test_config.py | 226 | def test_format_is_loaded_from_config_file(tmp_path, config): | CODE |
| LOW⚡ | tests/test_config.py | 235 | def test_render_session_resolves_configured_encoder_profile(config): | CODE |
| LOW | tests/test_config.py | 57 | def test_max_files_cached_uses_minus_one_for_unlimited(config): | CODE |
| LOW | tests/test_config.py | 65 | def test_tempconfig_restores_renderer_class_bases(config): | CODE |
| LOW | tests/test_config.py | 85 | def test_resolve_segment_extensions(config, format, expected_file_extension): | CODE |
| LOW | tests/test_config.py | 155 | def test_live_preview_requires_renderer_capability(config): | CODE |
| LOW | tests/test_config.py | 166 | def test_preview_requires_output(config): | CODE |
| LOW | tests/test_config.py | 186 | def test_dry_run_resolves_no_output_without_mutating_output_request(config): | CODE |
| LOW | tests/test_config.py | 249 | def test_video_encoder_profile_is_loaded_from_config_file(tmp_path, config): | CODE |
| LOW | tests/test_config.py | 275 | def test_media_loglevel_is_loaded_from_media_section(tmp_path, config): | CODE |
| LOW | tests/test_config.py | 286 | def test_video_encoder_options_are_copied(config): | CODE |
| LOW | tests/test_config.py | 297 | def test_encoder_cli_options_replace_config_file_map(tmp_path, config): | CODE |
| LOW | tests/test_config.py | 362 | def test_encoder_cli_options_reject_malformed_or_duplicate_entries(tmp_path, options): | CODE |
| LOW | tests/test_config.py | 372 | def test_cli_distinguishes_preview_from_live_preview(tmp_path): | CODE |
| LOW | tests/test_config.py | 387 | def test_opengl_cli_no_longer_disables_automatic_output(tmp_path, config): | CODE |
| LOW | tests/test_config.py | 405 | def test_absent_cli_output_options_preserve_config_file_values(tmp_path): | CODE |
| LOW | tests/test_config.py | 456 | def test_transparent_by_background_opacity(config, dry_run): | CODE |
| LOW | tests/test_config.py | 587 | def test_dry_run_with_png_format(config, dry_run): | CODE |
| LOW | tests/test_config.py | 596 | def test_dry_run_with_png_format_skipped_animations(config, dry_run): | CODE |
| LOW | tests/test_config.py | 623 | def test_from_to_animations_only_first_animation(config): | STRING |
| LOW | tests/interface/test_commands.py | 28 | def test_manim_cfg_subcommand(): | CODE |
| LOW | tests/interface/test_commands.py | 52 | def test_manim_plugins_subcommand(): | STRING |
| LOW | tests/interface/test_commands.py | 72 | def test_manim_checkhealth_subcommand(): | STRING |
| LOW | tests/interface/test_commands.py | 84 | def test_manim_checkhealth_failing_subcommand(): | STRING |
| LOW | tests/interface/test_commands.py | 103 | def test_manim_init_subcommand(): | STRING |
| LOW | tests/interface/test_cache_command.py | 28 | def test_cache_clear_resolves_each_scene_without_importing_file(tmp_path): | CODE |
| LOW | tests/interface/test_cache_command.py | 73 | def test_cache_clear_applies_config_file_and_path_overrides( | CODE |
| LOW | tests/test_scene_rendering/simple_scenes.py | 75 | def increment_mobject_update_count(mob, dt): | CODE |
| LOW | tests/test_scene_rendering/simple_scenes.py | 78 | def increment_scene_update_count(dt): | CODE |
| LOW | tests/test_scene_rendering/conftest.py | 46 | def live_preview_config_movie(config): | CODE |
| LOW | tests/test_scene_rendering/test_file_writer.py | 148 | def test_scene_with_non_raw_or_wav_audio(config, manim_caplog): | CODE |
| LOW | tests/test_scene_rendering/test_file_writer.py | 160 | def test_unicode_partial_movie(config, tmpdir, simple_scenes_path): | CODE |
| LOW | tests/test_scene_rendering/test_file_writer.py | 185 | def test_webm_audio_codec_checks_encoder_availability( | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 45 | def test_t_values_with_skip_animations(using_temp_config, disabling_caching): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 58 | def test_static_wait_detection(using_temp_config, disabling_caching): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 67 | def test_non_static_wait_detection(using_temp_config, disabling_caching): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 78 | def test_wait_with_stop_condition(using_temp_config, disabling_caching): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 101 | def test_t_values_with_cached_data(using_temp_config): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 119 | def test_t_values_save_last_frame(config, using_temp_config, still_config): | CODE |
| LOW | tests/test_scene_rendering/test_play_logic.py | 128 | def test_png_sequence_evaluates_every_frame(config, using_temp_config): | CODE |
| 811 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_ipython_magic.py | 1 | CODE | |
| LOW | tests/test_camera.py | 1 | CODE | |
| LOW | tests/conftest.py | 1 | CODE | |
| LOW | tests/assert_utils.py | 1 | CODE | |
| LOW | tests/test_config.py | 1 | CODE | |
| LOW | tests/template_generate_graphical_units_data.py | 1 | CODE | |
| LOW | tests/template_generate_graphical_units_data.py | 3 | CODE | |
| LOW | tests/interface/test_commands.py | 1 | CODE | |
| LOW | tests/interface/test_cache_command.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/infallible_scenes.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/simple_scenes.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/simple_scenes.py | 5 | CODE | |
| LOW | tests/test_scene_rendering/conftest.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_play_logic.py | 1 | CODE | |
| LOW | …ts/test_scene_rendering/test_video_segment_profiles.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_caching_related.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_caching_related.py | 9 | CODE | |
| LOW | tests/test_scene_rendering/test_sections.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_cli_flags.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_cairo_renderer.py | 1 | CODE | |
| LOW | tests/test_scene_rendering/test_cairo_renderer.py | 7 | CODE | |
| LOW | tests/test_scene_rendering/test_cairo_renderer.py | 10 | CODE | |
| LOW | tests/test_scene_rendering/test_parallel_encoding.py | 1 | CODE | |
| LOW | …s/test_scene_rendering/opengl/test_cli_flags_opengl.py | 1 | CODE | |
| LOW | …/test_scene_rendering/opengl/test_play_logic_opengl.py | 1 | CODE | |
| LOW | …ts/test_scene_rendering/opengl/test_opengl_renderer.py | 1 | CODE | |
| LOW | …ts/test_scene_rendering/opengl/test_opengl_renderer.py | 11 | CODE | |
| LOW | …_scene_rendering/opengl/test_caching_related_opengl.py | 1 | CODE | |
| LOW | tests/module/test_video_encoder.py | 1 | CODE | |
| LOW | tests/module/test_manager.py | 1 | CODE | |
| LOW | tests/module/test_output_path_behavior.py | 1 | CODE | |
| LOW | tests/module/test_output_plan.py | 1 | CODE | |
| LOW | tests/module/animation/test_transform.py | 1 | CODE | |
| LOW | tests/module/animation/test_animate.py | 1 | CODE | |
| LOW | tests/module/animation/test_animation.py | 1 | CODE | |
| LOW | tests/module/animation/test_creation.py | 1 | CODE | |
| LOW | tests/module/animation/test_composition.py | 1 | CODE | |
| LOW | tests/module/animation/test_updaters.py | 1 | CODE | |
| LOW | tests/module/animation/test_override_animation.py | 1 | CODE | |
| LOW | tests/module/utils/test_deprecation.py | 1 | CODE | |
| LOW | tests/module/utils/test_manim_color.py | 1 | CODE | |
| LOW | tests/module/utils/test_file_ops.py | 1 | CODE | |
| LOW | tests/module/utils/test_file_ops.py | 6 | CODE | |
| LOW | tests/module/utils/test_file_ops.py | 9 | CODE | |
| LOW | tests/module/utils/test_qhull.py | 1 | CODE | |
| LOW | tests/module/utils/test_color_helpers.py | 1 | CODE | |
| LOW | tests/module/utils/test_units.py | 1 | CODE | |
| LOW | tests/module/utils/test_color.py | 1 | CODE | |
| LOW | tests/module/utils/test_caching.py | 1 | CODE | |
| LOW | tests/module/utils/test_hashing.py | 1 | CODE | |
| LOW | tests/module/utils/test_space_ops.py | 1 | CODE | |
| LOW | tests/module/utils/test_space_ops.py | 7 | CODE | |
| LOW | tests/module/utils/test_bezier.py | 1 | CODE | |
| LOW | tests/module/scene/test_auto_zoom.py | 1 | CODE | |
| LOW | tests/module/scene/test_auto_zoom.py | 3 | CODE | |
| LOW | tests/module/scene/test_sound.py | 1 | CODE | |
| LOW | tests/module/scene/test_scene.py | 1 | CODE | |
| LOW | tests/module/mobject/test_boolean_ops.py | 1 | CODE | |
| LOW | tests/module/mobject/test_table.py | 3 | CODE | |
| LOW | tests/module/mobject/test_matrix.py | 1 | CODE | |
| 433 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_scene_rendering/simple_scenes.py | 7 | __all__ = [ | CODE |
| LOW | tests/module/mobject/geometry/test_unit_geometry.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | manim/constants.py | 14 | __all__ = [ | CODE |
| LOW | manim/typing.py | 35 | __all__ = [ | CODE |
| LOW | manim/manager.py | 26 | __all__ = ["Manager"] | CODE |
| LOW | manim/renderer/cairo_renderer.py | 25 | __all__ = ["CairoRenderer"] | CODE |
| LOW | manim/renderer/cairo_renderer.py | 261 | def update_skipping_status(self) -> None: | CODE |
| LOW | manim/renderer/shader.py | 31 | __all__ = [ | CODE |
| LOW | manim/renderer/shader.py | 327 | def set_uniforms(self, renderer: OpenGLRenderer) -> None: | CODE |
| LOW | manim/renderer/shader.py | 421 | def set_uniform(self, name: str, value: Any) -> None: | CODE |
| LOW | manim/renderer/protocol.py | 5 | __all__ = ["RendererCapabilities"] | CODE |
| LOW | manim/renderer/opengl_renderer_window.py | 15 | __all__ = ["Window"] | CODE |
| LOW | manim/renderer/vectorized_mobject_rendering.py | 20 | __all__ = [ | CODE |
| LOW | manim/renderer/shader_wrapper.py | 23 | __all__ = ["ShaderWrapper"] | CODE |
| LOW | manim/renderer/opengl_renderer.py | 70 | __all__ = ["OpenGLCamera", "OpenGLRenderer"] | CODE |
| LOW | manim/renderer/opengl_renderer.py | 834 | def update_skipping_status(self) -> None: | CODE |
| LOW | manim/renderer/opengl_renderer.py | 976 | def update_frame(self, scene: Scene) -> None: | CODE |
| LOW | manim/plugins/__init__.py | 6 | __all__ = [ | CODE |
| LOW | manim/plugins/plugins_flags.py | 10 | __all__ = ["list_plugins"] | CODE |
| LOW | manim/camera/moving_camera.py | 10 | __all__ = ["MovingCamera"] | CODE |
| LOW | manim/camera/three_d_camera.py | 5 | __all__ = ["ThreeDCamera"] | CODE |
| LOW⚡ | manim/camera/three_d_camera.py | 218 | def set_phi(self, value: float) -> None: | CODE |
| LOW⚡ | manim/camera/three_d_camera.py | 228 | def set_theta(self, value: float) -> None: | CODE |
| LOW⚡ | manim/camera/three_d_camera.py | 238 | def set_focal_distance(self, value: float) -> None: | CODE |
| LOW⚡ | manim/camera/three_d_camera.py | 248 | def set_gamma(self, value: float) -> None: | CODE |
| LOW⚡ | manim/camera/three_d_camera.py | 258 | def set_zoom(self, value: float) -> None: | CODE |
| LOW | manim/camera/multi_camera.py | 5 | __all__ = ["MultiCamera"] | CODE |
| LOW | manim/camera/multi_camera.py | 62 | def update_sub_cameras(self) -> None: | CODE |
| LOW | manim/camera/camera.py | 5 | __all__ = ["Camera", "BackgroundColoredVMobjectDisplayer"] | CODE |
| LOW | manim/camera/camera.py | 443 | def set_frame_to_background(self, background: PixelArray) -> None: | CODE |
| LOW | manim/camera/mapping_camera.py | 5 | __all__ = ["MappingCamera", "OldMultiCamera", "SplitScreenCamera"] | CODE |
| LOW | manim/animation/speedmodifier.py | 20 | __all__ = ["ChangeSpeed"] | CODE |
| LOW | manim/animation/speedmodifier.py | 282 | def update_mobjects(self, dt: float) -> None: | CODE |
| LOW | manim/animation/speedmodifier.py | 295 | def _setup_scene(self, scene) -> None: | CODE |
| LOW | manim/animation/creation.py | 60 | __all__ = [ | STRING |
| LOW | manim/animation/creation.py | 537 | def update_submobject_list(self, index: int) -> None: | STRING |
| LOW | manim/animation/creation.py | 645 | def update_submobject_list(self, index: int) -> None: | CODE |
| LOW | manim/animation/creation.py | 767 | def update_submobject_list(self, index: int) -> None: | CODE |
| LOW | manim/animation/transform_matching_parts.py | 5 | __all__ = ["TransformMatchingShapes", "TransformMatchingTex"] | CODE |
| LOW | manim/animation/numbers.py | 5 | __all__ = ["ChangingDecimal", "ChangeDecimalToValue"] | CODE |
| LOW | manim/animation/movement.py | 5 | __all__ = [ | CODE |
| LOW | manim/animation/animation.py | 14 | __all__ = ["Animation", "Wait", "Add", "override_animation"] | CODE |
| LOW | manim/animation/animation.py | 244 | def _setup_scene(self, scene: Scene) -> None: | CODE |
| LOW | manim/animation/animation.py | 289 | def update_mobjects(self, dt: float) -> None: | CODE |
| LOW | manim/animation/animation.py | 503 | def set_default(cls, **kwargs) -> None: | CODE |
| LOW | manim/animation/animation.py | 634 | def update_mobjects(self, dt: float) -> None: | STRING |
| LOW | manim/animation/animation.py | 718 | def update_mobjects(self, dt: float) -> None: | STRING |
| LOW | manim/animation/specialized.py | 3 | __all__ = ["Broadcast"] | CODE |
| LOW | manim/animation/transform.py | 5 | __all__ = [ | CODE |
| LOW | manim/animation/indication.py | 30 | __all__ = [ | CODE |
| LOW | manim/animation/composition.py | 24 | __all__ = ["AnimationGroup", "Succession", "LaggedStart", "LaggedStartMap"] | CODE |
| LOW | manim/animation/composition.py | 98 | def _setup_scene(self, scene: Scene) -> None: | CODE |
| LOW | manim/animation/composition.py | 117 | def update_mobjects(self, dt: float) -> None: | CODE |
| LOW⚡ | manim/animation/composition.py | 250 | def update_mobjects(self, dt: float) -> None: | CODE |
| LOW⚡ | manim/animation/composition.py | 254 | def _setup_scene(self, scene: Scene | None) -> None: | CODE |
| LOW⚡ | manim/animation/composition.py | 264 | def update_active_animation(self, index: int) -> None: | CODE |
| LOW | manim/animation/changing.py | 5 | __all__ = ["AnimatedBoundary", "TracedPath"] | CODE |
| LOW | manim/animation/changing.py | 67 | def update_boundary_copies(self, dt: float) -> None: | CODE |
| LOW | manim/animation/changing.py | 161 | def update_path(self, mob: Mobject, dt: float) -> None: | CODE |
| LOW | manim/animation/rotation.py | 5 | __all__ = ["Rotating", "Rotate"] | CODE |
| 139 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 78 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 108 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 111 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 122 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 124 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 167 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 200 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 239 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/utils/test_color_helpers.py | 241 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/module/utils/test_color_helpers.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/module/utils/test_color_helpers.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/mobject/text/test_texmobject.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/module/mobject/text/test_texmobject.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | manim/utils/tex_templates.py | 153 | # ----------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmarks/bench_lissajous.py | 26 | # ─── Helper functions (from functions.py) ───────────────────────────────────── | COMMENT |
| MEDIUM | benchmarks/bench_lissajous.py | 63 | # ─── Custom mobjects (from mobjects.py) ─────────────────────────────────────── | COMMENT |
| MEDIUM | benchmarks/bench_lissajous.py | 124 | # ─── Scene (from scenes.py) ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | benchmarks/bench_lissajous.py | 395 | # ─── Benchmark runner ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/release.py | 50 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 52 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 66 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 68 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 206 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 208 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 242 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 244 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 510 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 512 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 547 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 549 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 789 | # ============================================================================= | COMMENT |
| MEDIUM | scripts/release.py | 791 | # ============================================================================= | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/renderer/shader.py | 380 | CODE | |
| LOW | manim/renderer/opengl_renderer_window.py | 115 | CODE | |
| LOW | manim/utils/deprecation.py | 264 | CODE | |
| LOW | manim/utils/deprecation.py | 482 | CODE | |
| LOW | manim/utils/bezier.py | 716 | CODE | |
| LOW | manim/utils/bezier.py | 1967 | CODE | |
| LOW | manim/utils/file_ops.py | 97 | CODE | |
| LOW | manim/utils/qhull.py | 188 | CODE | |
| LOW | manim/utils/hashing.py | 243 | CODE | |
| LOW | manim/utils/tex_file_writing.py | 118 | CODE | |
| LOW | manim/utils/color/core.py | 163 | CODE | |
| LOW | manim/utils/docbuild/autoaliasattr_directive.py | 100 | CODE | |
| LOW | manim/utils/docbuild/module_parsing.py | 62 | CODE | |
| LOW | manim/cli/init/commands.py | 100 | CODE | |
| LOW | manim/cli/render/commands.py | 80 | CODE | |
| LOW | manim/cli/cfg/group.py | 167 | CODE | |
| LOW | manim/scene/three_d_scene.py | 211 | CODE | |
| LOW | manim/scene/scene_file_writer.py | 747 | CODE | |
| LOW | manim/scene/scene_file_writer.py | 857 | CODE | |
| LOW | manim/scene/scene.py | 1419 | CODE | |
| LOW | manim/scene/scene.py | 1523 | CODE | |
| LOW | manim/scene/scene.py | 1647 | CODE | |
| LOW | manim/mobject/vector_field.py | 759 | CODE | |
| LOW | manim/mobject/graph.py | 319 | CODE | |
| LOW | manim/mobject/svg/svg_mobject.py | 266 | CODE | |
| LOW | manim/mobject/svg/svg_mobject.py | 324 | CODE | |
| LOW | manim/mobject/svg/svg_mobject.py | 576 | CODE | |
| LOW | manim/mobject/types/vectorized_mobject.py | 2253 | CODE | |
| LOW | manim/mobject/types/vectorized_mobject.py | 2929 | CODE | |
| LOW | manim/mobject/three_d/three_dimensions.py | 234 | CODE | |
| LOW | manim/mobject/three_d/polyhedra.py | 430 | CODE | |
| LOW | manim/mobject/graphing/number_line.py | 581 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 640 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 1189 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 3215 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 3335 | CODE | |
| LOW | manim/mobject/geometry/boolean_ops.py | 63 | CODE | |
| LOW | manim/mobject/geometry/boolean_ops.py | 112 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 179 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 448 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 768 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 1181 | CODE | |
| LOW | manim/mobject/text/typst_mobject.py | 869 | CODE | |
| LOW | manim/mobject/text/typst_mobject.py | 885 | CODE | |
| LOW | manim/mobject/text/tex_mobject.py | 351 | CODE | |
| LOW | manim/mobject/text/tex_mobject.py | 465 | CODE | |
| LOW | manim/mobject/opengl/opengl_surface.py | 300 | CODE | |
| LOW | manim/mobject/opengl/opengl_mobject.py | 2681 | CODE | |
| LOW | manim/mobject/opengl/opengl_vectorized_mobject.py | 634 | CODE | |
| LOW | manim/_config/video_encoder.py | 84 | CODE | |
| LOW | .github/scripts/ci_build_cairo.py | 112 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/module/test_video_encoder.py | 26 | CODE | |
| LOW | manim/renderer/opengl_renderer.py | 100 | CODE | |
| LOW | manim/camera/three_d_camera.py | 40 | CODE | |
| LOW | manim/camera/camera.py | 83 | CODE | |
| LOW | manim/animation/creation.py | 606 | CODE | |
| LOW | manim/animation/animation.py | 128 | CODE | |
| LOW | manim/animation/specialized.py | 52 | CODE | |
| LOW | manim/animation/indication.py | 613 | CODE | |
| LOW | manim/utils/bezier.py | 2050 | CODE | |
| LOW | manim/utils/config_ops.py | 72 | CODE | |
| LOW | manim/scene/zoomed_scene.py | 76 | CODE | |
| LOW | manim/scene/vector_space_scene.py | 642 | CODE | |
| LOW | manim/mobject/matrix.py | 165 | CODE | |
| LOW | manim/mobject/vector_field.py | 559 | CODE | |
| LOW | manim/mobject/vector_field.py | 759 | CODE | |
| LOW | manim/mobject/graph.py | 567 | CODE | |
| LOW | manim/mobject/table.py | 192 | CODE | |
| LOW | manim/mobject/mobject.py | 2758 | CODE | |
| LOW | manim/mobject/svg/svg_mobject.py | 97 | CODE | |
| LOW | manim/mobject/types/vectorized_mobject.py | 109 | CODE | |
| LOW | manim/mobject/types/vectorized_mobject.py | 396 | CODE | |
| LOW | manim/mobject/three_d/three_dimensions.py | 113 | CODE | |
| LOW | manim/mobject/graphing/number_line.py | 141 | CODE | |
| LOW | manim/mobject/graphing/probability.py | 274 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 1189 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 1612 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 1931 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 2447 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 2762 | CODE | |
| LOW | manim/mobject/graphing/coordinate_systems.py | 3033 | CODE | |
| LOW | manim/mobject/graphing/scale.py | 173 | CODE | |
| LOW | manim/mobject/geometry/line.py | 981 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 448 | CODE | |
| LOW | manim/mobject/text/text_mobject.py | 1181 | CODE | |
| LOW | manim/mobject/text/typst_mobject.py | 339 | CODE | |
| LOW | manim/mobject/text/numbers.py | 83 | CODE | |
| LOW | manim/mobject/text/tex_mobject.py | 57 | CODE | |
| LOW | manim/mobject/text/tex_mobject.py | 133 | CODE | |
| LOW | manim/mobject/text/code_mobject.py | 172 | CODE | |
| LOW | manim/mobject/opengl/opengl_geometry.py | 670 | CODE | |
| LOW | manim/mobject/opengl/opengl_surface.py | 68 | CODE | |
| LOW | manim/mobject/opengl/opengl_mobject.py | 153 | CODE | |
| LOW | manim/mobject/opengl/opengl_mobject.py | 1156 | CODE | |
| LOW | manim/mobject/opengl/opengl_vectorized_mobject.py | 95 | CODE | |
| LOW | manim/mobject/opengl/opengl_vectorized_mobject.py | 296 | CODE | |
| LOW | benchmarks/bench_lissajous.py | 136 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/module/animation/test_updaters.py | 9 | # Create a simple mobject and animation | COMMENT |
| MEDIUM | tests/module/mobject/mobject/test_mobject.py | 346 | # Define a rotation matrix (90 degrees rotation around z-axis) | COMMENT |
| MEDIUM | tests/test_logging/basic_scenes_write_stuff.py | 5 | # This module is used in the CLI tests in tests_CLi.py. | COMMENT |
| MEDIUM | tests/test_logging/basic_scenes_square_to_circle.py | 5 | # This module is used in the CLI tests in tests_CLi.py. | COMMENT |
| MEDIUM | tests/test_logging/basic_scenes_error.py | 5 | # This module is intended to raise an error. | COMMENT |
| MEDIUM | manim/renderer/cairo_renderer.py | 262 | """This method is used internally to check if the current | STRING |
| MEDIUM | manim/utils/hashing.py | 244 | """This method is used to serialize objects to JSON format. | STRING |
| MEDIUM | manim/utils/color/core.py | 273 | """This function is used as a proxy for constructing a color with an internal | STRING |
| MEDIUM | manim/utils/color/core.py | 785 | """This method is intended to be overwritten by custom color space classes | STRING |
| MEDIUM | manim/utils/color/core.py | 961 | """This method is currently not implemented. Refer to :func:`color_gradient` for | STRING |
| MEDIUM | manim/utils/testing/frames_comparison.py | 252 | # Create the directory if not existing. | COMMENT |
| MEDIUM | manim/scene/zoomed_scene.py | 111 | """This method is used internally by Manim to | STRING |
| MEDIUM | manim/scene/zoomed_scene.py | 140 | """This method is used to activate the zooming for the zoomed_camera. | STRING |
| MEDIUM | manim/mobject/graph.py | 332 | # The following code is SageMath's tree layout implementation, taken from | COMMENT |
| MEDIUM | manim/mobject/svg/svg_mobject.py | 202 | # Create a temporary svg file to dump modified svg to be parsed | COMMENT |
| MEDIUM | manim/mobject/types/vectorized_mobject.py | 1866 | # Create a null path at the very end | STRING |
| MEDIUM | manim/mobject/opengl/opengl_vectorized_mobject.py | 1240 | # Create a null path at the very end | COMMENT |
| MEDIUM | example_scenes/customtex.py | 25 | # Create a new template | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | manim/__init__.py | 114 | except ImportError: | CODE |
| HIGH | manim/manager.py | 156 | except EndSceneEarlyException: | CODE |
| HIGH | manim/renderer/opengl_renderer.py | 750 | except KeyError: | CODE |
| HIGH | manim/utils/ipython_magic.py | 28 | except ImportError: | CODE |
| HIGH | manim/utils/hashing.py | 188 | except TypeError: | CODE |
| HIGH | manim/cli/render/render_options.py | 55 | except Exception: | CODE |
| HIGH | manim/_config/utils.py | 1419 | except ImportError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 19 | except Exception as e: | CODE |
| MEDIUM | tests/conftest.py | 14 | def pytest_report_header(config): | CODE |
| LOW | manim/renderer/opengl_renderer.py | 614 | except Exception: | CODE |
| LOW | manim/utils/rate_functions.py | 37 | except Exception: # because functions `not_quite_there`, `function squish_rate_func` are not wor | STRING |
| LOW | manim/utils/module_ops.py | 42 | except Exception as e: | CODE |
| LOW | manim/utils/testing/frames_comparison.py | 123 | except Exception: | CODE |
| LOW | manim/utils/docbuild/manim_directive.py | 314 | except Exception as e: | STRING |
| LOW | manim/cli/render/render_options.py | 55 | except Exception: | CODE |
| LOW | manim/cli/render/render_options.py | 60 | except Exception: | CODE |
| LOW | manim/cli/render/render_options.py | 128 | except Exception: | CODE |
| LOW | manim/cli/render/global_options.py | 49 | except Exception: | CODE |
| LOW | manim/cli/render/commands.py | 123 | except Exception: | CODE |
| LOW | manim/cli/render/commands.py | 146 | except Exception: | CODE |
| LOW | manim/scene/three_d_scene.py | 137 | except Exception as e: | CODE |
| LOW | manim/scene/three_d_scene.py | 155 | except Exception as e: | CODE |
| LOW | manim/scene/scene_file_writer.py | 122 | except Exception as exception: | CODE |
| MEDIUM | manim/scene/scene_file_writer.py | 119 | def _abort_encoder(self) -> None: | CODE |
| LOW | manim/scene/video_segment_encoder.py | 115 | except Exception as error: | CODE |
| LOW | manim/scene/video_segment_encoder.py | 120 | except Exception as error: | CODE |
| LOW | manim/scene/video_segment_encoder.py | 134 | except Exception as error: | CODE |
| LOW | manim/scene/video_segment_encoder.py | 139 | except Exception as error: | CODE |
| LOW | manim/mobject/svg/svg_mobject.py | 289 | except Exception: | CODE |
| LOW | manim/mobject/svg/svg_mobject.py | 319 | except Exception as e: | CODE |
| LOW | manim/mobject/geometry/arc.py | 427 | except Exception: | STRING |
| LOW | manim/_config/utils.py | 823 | except Exception: | CODE |
| LOW | benchmarks/bench_lissajous.py | 437 | except Exception as e: | CODE |
| LOW | .github/scripts/ci_build_cairo.py | 160 | except Exception: | CODE |
| LOW | example_scenes/advanced_tex_fonts.py | 130 | except Exception: | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/module/mobject/text/test_numbers.py | 0 | test that scale produces the same results as .scale() | STRING |
| HIGH | tests/module/mobject/text/test_texmobject.py | 0 | test that scale produces the same results as .scale() | STRING |
| HIGH | tests/opengl/test_texmobject_opengl.py | 0 | test that scale produces the same results as .scale() | STRING |
| HIGH | tests/opengl/test_numbers_opengl.py | 0 | test that scale produces the same results as .scale() | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | manim/scene/scene_file_writer.py | 813 | graph.push(frame) | CODE |
| HIGH | manim/scene/scene_file_writer.py | 815 | graph.push(None) # EOF: https://github.com/PyAV-Org/PyAV/issues/886. | CODE |
| HIGH | manim/mobject/vector_field.py | 927 | If undefined, it will be selected so that the total animation length is 1.5 times the run time of each strea | STRING |
| HIGH | manim/mobject/vector_field.py | 930 | If undefined, the virtual time of the stream lines is used as run time. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mypy.ini | 21 | # | COMMENT |
| LOW | mypy.ini | 41 | # allow_redefinition = False | COMMENT |
| LOW | manim/animation/indication.py | 421 | # their amplitudes in opposing directions (first ripple from 0 to 1 to 0, | COMMENT |
| LOW | manim/utils/bezier.py | 361 | COMMENT | |
| LOW | manim/utils/bezier.py | 981 | current_number_of_curves, nppc, dim = bezier_tuples.shape | COMMENT |
| LOW | manim/utils/tex_templates.py | 81 | """An instance of a simple TeX template with only basic AMS packages loaded""" | COMMENT |
| LOW | manim/utils/tex_templates.py | 101 | # american_typewriter : "American Typewriter" | COMMENT |
| LOW | manim/utils/tex_templates.py | 121 | # ecf_webster : "ECF Webster (with TX fonts)" | COMMENT |
| LOW | manim/utils/tex_templates.py | 141 | # palatino : "Palatino (Symbol Greek)" | COMMENT |
| LOW | manim/mobject/graphing/coordinate_systems.py | 2161 | coords = coords[0] | COMMENT |
| LOW | manim/mobject/geometry/polygram.py | 381 | density: int = 2, | COMMENT |
| LOW | example_scenes/opengl.py | 421 | self.play(circle.animate.shift(2 * RIGHT).scale(0.25)) | COMMENT |
| LOW | example_scenes/opengl.py | 441 | COMMENT | |
| LOW | example_scenes/basic.py | 1 | #!/usr/bin/env python | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/utils/space_ops.py | 447 | # If it's also too aligned to the Z axis, just return DOWN | COMMENT |
| MEDIUM | manim/utils/space_ops.py | 778 | # Closest point of the detached rings to the aforementioned | COMMENT |
| LOW | manim/utils/hashing.py | 183 | # types. Hence, we simply return the object. | COMMENT |
| LOW | manim/mobject/mobject.py | 3215 | # If empty, simply add n point mobjects | COMMENT |
| LOW | manim/mobject/mobject.py | 3621 | # just return a function that will add the updater | COMMENT |
| LOW | manim/mobject/types/vectorized_mobject.py | 1028 | # TODO remove the value error and just add two parameters with one optional | STRING |
| LOW | manim/mobject/opengl/opengl_mobject.py | 2731 | # If empty, simply add n point mobjects | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | docs/source/_static/manim-binder.min.js | 2 | (()=>{var __webpack_modules__={5067:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActivityMo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/renderer/shader_wrapper.py | 33 | # Check if what was passed in is already a valid path to a file | COMMENT |
| LOW | manim/utils/deprecation.py | 430 | # Check if decorator is used without parenthesis | COMMENT |
| LOW | manim/utils/docbuild/module_parsing.py | 162 | # Check if this node is a TypeAlias (type <name> = <value>) | COMMENT |
| LOW | manim/utils/docbuild/module_parsing.py | 203 | # Check if it is a typing.TypeVar (<target> = TypeVar(...)). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/mobject/text/text_mobject.py | 1146 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | CODE |
| LOW | manim/mobject/text/text_mobject.py | 1146 | "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | CODE |
| LOW | docs/source/_static/manim-binder.min.js | 2 | (()=>{var __webpack_modules__={5067:(e,t,i)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ActivityMo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/source/installation/uv.md | 57 | ### Step 1: Installing Python | COMMENT |
| LOW | docs/source/installation/uv.md | 138 | ### Step 3: Installing Manim | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/utils/tex_templates.py | 87 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | manim/utils/color/core.py | 964 | # TODO: implement proper gradient, research good implementation for this or look at 3b1b implementation | COMMENT |