RepoPilot

3b1b / manim

Search 3b1b/manim

GitHub

Code

How 3b1b/manim is laid out, and where to start for common changes.

C
Architecture grade
score 67/100
8+
Import cycles
lower is better
116
Files mapped
577 imports between them
93%
Layering
of imports point one way

From the map of which files import which, built when the code was last read in full. It shows what depends on what, not a reading order.

Module map

Shade by
Entry points and orchestratorsShared coreFoundationutils21 files · 27 commitsconfig1 file · 0 commitsmobject35 files · 40 commitsconstants1 file · 0 commitstyping1 file · 0 commitslogger1 file · 0 commitsrenderer10 files · 14 commitsscene5 files · 15 commitswindow1 file · 9 commitsanimation14 files · 7 commitscamera3 files · 19 commitsevent_keys1 file · 2 commitsevent_handler4 files · 0 commitsmodule_loader1 file · 0 commits__init__1 file · 5 commitsextract_scene1 file · 0 commits__main__1 file · 0 commits

17 modules, 70 links. A link means one module imports another; thicker lines mean more imports. Select a module to trace it: blue lines go to what it uses, orange lines come from what uses it.

utils218527Shared core
config1820Shared core
mobject3571040Orchestrator
constants1720Shared core
typing1700Foundation
logger1600Foundation
renderer104214Shared core
scene541215Orchestrator
window1449Shared core
animation14357Orchestrator
camera33619Orchestrator
event_keys1302Foundation
event_handler4210Shared core
module_loader1220Shared core
__init__11105Orchestrator
extract_scene1140Orchestrator
__main__1050Entry or leaf

Where to start reading

  1. Repository root
  2. Repository root
  3. Likely public API
  4. Likely public API
  5. Likely start-up file
  6. Suggested starting pointAI
  7. Suggested starting pointAI
  8. Suggested starting pointAI

Find files for a task

AI

Add a new Animation type

  • Inherit from Animation base class and override interpolate_mobject(self, alpha) to define per-frame state updates.
  • Export the class in manimlib/animation/__init__.py to make it importable.

Add a new Mobject (visual element)

  • Inherit from Mobject and override init_points() to populate self.points with vertex coordinates.
  • Place in geometry.py for shapes, functions.py for graphs, or create a new category module.
  • Export the class in manimlib/mobject/__init__.py.

Customize rendering output (resolution, codec, frame rate)

  • Edit manimlib/default_config.yml to change default pixel_height, pixel_width, frame_rate, or output format.
  • Or pass CLI arguments to extract_scene.py (e.g., -ql for low quality, -p for preview).

Add a new shader effect

  • Write a new .wgsl shader file in manimlib/shaders/ or manimlib/shaders/inserts/ following WebGPU syntax.
  • Reference it in renderer.py or shader_source.py and bind it to the appropriate render pass.

Change the public API

Trace runtime behavior

Add or update tests

Change build or automation

RepoPilot lists up to 500 files, so a file missing here may still exist.

  • Files marked “likely” are guessed from their names.

Code quality and hotspots

Largest source files

  • Branch points25 per file on average
  • Code issues0 errors, 14 warnings
  • Largest file2,314 lines
  • Hotspot load3 high-risk files

Static checks on the 15 largest source files.

Tests, CI and tooling

  • CIGitHub Actions2 workflows
  • Tests8 test filesPytest · 0.07 test files per source file (file count, not coverage)
  • Dependency updatesNo config detected

Test folders: tests

Hotspots

Files that change often and branch heavily, highest first. Branch points count if, loop, case, catch, ternary, && and || in the file.