Repository Analysis

3b1b/manim

Animation engine for explanatory math videos

13.1 Low AI signal View on GitHub
13.1
Adjusted Score
13.1
Raw Score
100%
Time Factor
2026-04-18
Last Push
87,225
Stars
Python
Language
25,503
Lines of Code
110
Files
338
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 1MEDIUM 7LOW 330

Pattern Findings

338 matches across 10 categories. Click a row to expand file-level details.

Unused Imports174 hits · 150 pts
SeverityFileLineSnippet
LOWexample_scenes.py1
LOWmanimlib/config.py1
LOWmanimlib/window.py1
LOWmanimlib/constants.py1
LOWmanimlib/__init__.py17
LOWmanimlib/__init__.py19
LOWmanimlib/__init__.py21
LOWmanimlib/__init__.py22
LOWmanimlib/__init__.py23
LOWmanimlib/__init__.py24
LOWmanimlib/__init__.py25
LOWmanimlib/__init__.py26
LOWmanimlib/__init__.py27
LOWmanimlib/__init__.py28
LOWmanimlib/__init__.py29
LOWmanimlib/__init__.py30
LOWmanimlib/__init__.py31
LOWmanimlib/__init__.py32
LOWmanimlib/__init__.py33
LOWmanimlib/__init__.py35
LOWmanimlib/__init__.py37
LOWmanimlib/__init__.py38
LOWmanimlib/__init__.py39
LOWmanimlib/__init__.py40
LOWmanimlib/__init__.py41
LOWmanimlib/__init__.py42
LOWmanimlib/__init__.py43
LOWmanimlib/__init__.py44
LOWmanimlib/__init__.py45
LOWmanimlib/__init__.py46
LOWmanimlib/__init__.py47
LOWmanimlib/__init__.py48
LOWmanimlib/__init__.py49
LOWmanimlib/__init__.py50
LOWmanimlib/__init__.py51
LOWmanimlib/__init__.py52
LOWmanimlib/__init__.py53
LOWmanimlib/__init__.py54
LOWmanimlib/__init__.py55
LOWmanimlib/__init__.py56
LOWmanimlib/__init__.py57
LOWmanimlib/__init__.py58
LOWmanimlib/__init__.py59
LOWmanimlib/__init__.py60
LOWmanimlib/__init__.py61
LOWmanimlib/__init__.py62
LOWmanimlib/__init__.py63
LOWmanimlib/__init__.py64
LOWmanimlib/__init__.py65
LOWmanimlib/__init__.py67
LOWmanimlib/__init__.py68
LOWmanimlib/__init__.py70
LOWmanimlib/__init__.py71
LOWmanimlib/__init__.py72
LOWmanimlib/__init__.py73
LOWmanimlib/__init__.py74
LOWmanimlib/__init__.py75
LOWmanimlib/__init__.py76
LOWmanimlib/__init__.py77
LOWmanimlib/__init__.py78
114 more matches not shown…
Hyper-Verbose Identifiers133 hits · 134 pts
SeverityFileLineSnippet
LOWmanimlib/config.py268def update_file_writer_config(config: Dict, args: Namespace):
LOWmanimlib/window.py120 def pixel_coords_to_space_coords(
LOWmanimlib/extract_scene.py146def insert_embed_line_to_module(module: Module, run_config: Dict) -> None:
LOWmanimlib/module_loader.py53 def _exec_module_and_track_imports(spec, module: Module) -> set[str]:
LOWmanimlib/camera/camera_frame.py97 def get_inverse_camera_rotation_matrix(self):
LOWmanimlib/camera/camera_frame.py251 def get_implied_camera_location(self) -> np.ndarray:
LOWmanimlib/animation/transform_matching_parts.py101 def find_pairs_with_matching_shapes(
LOWmanimlib/animation/animation.py113 def get_all_mobjects_to_update(self) -> list[Mobject]:
LOWmanimlib/animation/transform.py83 def check_target_mobject_validity(self) -> None:
LOWmanimlib/animation/composition.py90 def build_animations_with_timings(self, lag_ratio: float) -> None:
LOWmanimlib/utils/rate_functions.py48def there_and_back_with_pause(t: float, pause_ratio: float = 1. / 3) -> float:
LOWmanimlib/utils/bezier.py75def partial_quadratic_bezier_points(
LOWmanimlib/utils/bezier.py117def set_array_by_interpolation(
LOWmanimlib/utils/bezier.py174def quadratic_bezier_points_for_arc(angle: float, n_components: int = 8):
LOWmanimlib/utils/bezier.py184def approx_smooth_quadratic_bezier_handles(
LOWmanimlib/utils/bezier.py257def get_smooth_cubic_bezier_handle_points(
LOWmanimlib/utils/bezier.py343def get_quadratic_approximation_of_cubic(
LOWmanimlib/utils/bezier.py415def get_smooth_quadratic_bezier_path_through(
LOWmanimlib/utils/space_ops.py98def quaternion_from_angle_axis(
LOWmanimlib/utils/space_ops.py105def angle_axis_from_quaternion(quat: Vect4) -> Tuple[float, Vect3]:
LOWmanimlib/utils/space_ops.py132def rotation_matrix_transpose_from_quaternion(quat: Vect4) -> Matrix3x3:
LOWmanimlib/utils/space_ops.py136def rotation_matrix_from_quaternion(quat: Vect4) -> Matrix3x3:
LOWmanimlib/utils/space_ops.py147def rotation_matrix_transpose(angle: float, axis: Vect3) -> Matrix3x3:
LOWmanimlib/utils/space_ops.py356def get_closest_point_on_line(a: VectN, b: VectN, p: VectN) -> VectN:
LOWmanimlib/utils/images.py17def get_full_raster_image_path(image_file_name: str) -> str:
LOWmanimlib/utils/images.py25def get_full_vector_image_path(image_file_name: str) -> str:
LOWmanimlib/utils/images.py33def get_full_three_d_model_path(model_file_name: str) -> str:
LOWmanimlib/utils/family_ops.py11def extract_mobject_family_members(
LOWmanimlib/utils/iterables.py108def resize_with_interpolation(nparray: np.ndarray, length: int) -> np.ndarray:
LOWmanimlib/utils/shaders.py80def get_shader_code_from_file(filename: str) -> str | None:
LOWmanimlib/scene/scene_file_writer.py94 def init_partial_movie_directory(self):
LOWmanimlib/scene/scene_file_writer.py121 def get_next_partial_movie_path(self) -> str:
LOWmanimlib/scene/scene_file_writer.py270 def set_progress_display_description(self, file: str = "", sub_desc: str = "") -> None:
LOWmanimlib/scene/scene.py297 def get_mobject_family_members(self) -> list[Mobject]:
LOWmanimlib/scene/scene.py496 def get_animation_time_progression(
LOWmanimlib/scene/scene.py508 def get_wait_time_progression(
LOWmanimlib/scene/scene.py555 def progress_through_animations(self, animations: Iterable[Animation]) -> None:
LOWmanimlib/scene/scene.py640 def revert_to_original_skipping_status(self):
LOWmanimlib/scene/interactive_scene.py145 def update_selection_rectangle(self, rect: Rectangle):
LOWmanimlib/scene/interactive_scene.py161 def update_selection_highlight(self, highlight: Mobject):
LOWmanimlib/scene/interactive_scene.py263 def regenerate_selection_search_set(self):
LOWmanimlib/scene/interactive_scene.py581 def handle_sweeping_selection(self, point: Vect3):
LOWmanimlib/scene/scene_embed.py39 def get_ipython_shell_for_embedded_scene(self) -> InteractiveShellEmbed:
LOWmanimlib/scene/scene_embed.py95 def ensure_frame_update_post_cell(self):
LOWmanimlib/mobject/matrix.py154 def add_background_to_entries(self) -> Self:
LOWmanimlib/mobject/matrix.py167 def swap_entries_for_ellipses(
LOWmanimlib/mobject/vector_field.py34def get_vectorized_rgb_gradient_function(
LOWmanimlib/mobject/vector_field.py57def get_rgb_gradient_function(
LOWmanimlib/mobject/vector_field.py89def move_submobjects_along_vector_field(
LOWmanimlib/mobject/vector_field.py103def move_points_along_vector_field(
LOWmanimlib/mobject/vector_field.py231 def init_base_stroke_width_array(self, n_sample_points):
LOWmanimlib/mobject/boolean_ops.py12def _convert_vmobject_to_skia_path(vmobject: VMobject) -> pathops.Path:
LOWmanimlib/mobject/boolean_ops.py26def _convert_skia_path_to_vmobject(
LOWmanimlib/mobject/numbers.py80 def set_submobjects_from_number(self, number: float | complex) -> None:
LOWmanimlib/mobject/numbers.py217 def _handle_scale_side_effects(self, scale_factor: float) -> Self:
LOWmanimlib/mobject/interactive.py520 def move_panel_and_controls_to_panel_opener(self) -> None:
LOWmanimlib/mobject/interactive.py558 def panel_opener_on_mouse_drag(self, mob, event_data: dict[str, np.ndarray]) -> bool:
LOWmanimlib/mobject/geometry.py116 def reset_endpoints_based_on_tip(self, tip: ArrowTip, at_start: bool) -> Self:
LOWmanimlib/mobject/geometry.py798 def set_perpendicular_to_camera(self, camera_frame):
LOWmanimlib/mobject/geometry.py996 def create_tip_with_stroke_width(self) -> Self:
73 more matches not shown…
Deep Nesting15 hits · 15 pts
SeverityFileLineSnippet
LOWmanimlib/module_loader.py139
LOWmanimlib/event_handler/event_dispatcher.py37
LOWmanimlib/scene/scene_file_writer.py349
LOWmanimlib/scene/scene.py827
LOWmanimlib/scene/interactive_scene.py412
LOWmanimlib/scene/interactive_scene.py477
LOWmanimlib/scene/interactive_scene.py550
LOWmanimlib/mobject/boolean_ops.py26
LOWmanimlib/mobject/interactive.py445
LOWmanimlib/mobject/coordinate_systems.py363
LOWmanimlib/mobject/svg/svg_mobject.py203
LOWmanimlib/mobject/svg/text_mobject.py319
LOWmanimlib/mobject/svg/old_tex_mobject.py153
LOWmanimlib/mobject/svg/tex_mobject.py92
LOWmanimlib/mobject/types/vectorized_mobject.py694
Self-Referential Comments5 hits · 14 pts
SeverityFileLineSnippet
MEDIUMmanimlib/__main__.py24 # Create a new dict to be able to upate without
MEDIUMmanimlib/__main__.py30 # Create a reusable window
MEDIUMmanimlib/animation/indication.py235 # Create a gaussian such that 3 sigmas out on either side
MEDIUMmanimlib/utils/tex_file_writing.py98 temp_dir.mkdir(exist_ok=True) # Create the directory if it does not already exist
MEDIUMmanimlib/mobject/numbers.py81 # Create the submobject list
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippet
LOWmanimlib/default_config.yml12 # Set this to true if you want the path to video files
LOWmanimlib/utils/file_ops.py31 # Check if this is a file online first, and if so, download
LOWmanimlib/utils/file_ops.py44 # Check if what was passed in is already a valid path to a file
LOWmanimlib/mobject/mobject.py907 # Check if mark as static or not for camera
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippet
HIGHmanimlib/utils/tex_file_writing.py58Convert LaTeX string to SVG string. Args: latex: LaTeX source code template: Path to a template LaT
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippet
MEDIUMexample_scenes.py300 # If the argument itself might change, you can use f_always,
MEDIUMmanimlib/mobject/svg/old_tex_mobject.py111 # tex == "\\frac", # you can use \\over as a alternative
Excessive Try-Catch Wrapping2 hits · 2 pts
SeverityFileLineSnippet
LOWmanimlib/config.py260 except Exception as err:
LOWmanimlib/scene/scene_embed.py135 except Exception as e:
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippet
LOWmanimlib/mobject/mobject.py1783 # If empty, simply add n point mobjects
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippet
LOWmanimlib/default_config.yml1# This file determines the default configuration for how manim is