Conversation
…uard, scene lint, configurable timeouts, stale VHS detection, layout validation Addresses the following issues: - #6: Manim quality mapping now supports arbitrary <height>p<fps> strings (e.g. 1080p30) with explicit --resolution/--frame_rate flags. Unknown quality strings produce a clear warning and fall back to 720p30. - #7: manim_runner checks the active venv bin/ directory before PATH. VHS runner checks ~/go/bin, /usr/local/bin, /snap/bin as fallbacks. Both print actionable install instructions on failure. - #8: Pipeline generate-all now retries Manim rendering (with cache clear) when compose fails with FREEZE GUARD, fixing the chicken-and-egg timing data problem on first runs. - #9/#10/#4: New scene_lint module and 'docgen scene-lint' CLI command detect weight=BOLD (Pango font substitution) and positional color args to Text() (cryptic ValueError). Wired into validate as a soft check. - #13: ffmpeg timeout is now configurable via compose.ffmpeg_timeout in docgen.yaml (default 600s). Used by compose, manim_runner, and VHS. - #12: Compose warns when a .tape file is newer than its rendered mp4, configurable via compose.warn_stale_vhs (default true). - #2: Layout validation (overlap/edge detection from manim_layout.py) is now wired into the validator for Manim-type segments. - Config: Added manim_font, ffmpeg_timeout, compose_warn_stale properties. Compose path resolution is quality-aware and searches multiple quality directories including the no-scenes/ variant. All 100 tests pass. Ruff lint clean. Co-authored-by: John Menke <jmjava@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR addresses 8 of the 14 open issues with concrete code fixes, new features, and tests. All changes are backward-compatible — existing
docgen.yamlfiles work without modification.Issues Addressed
Issue #6 — Manim quality mapping: 1080p30 falls back to 720p30 silently
_quality_flags()to support arbitrary<height>p<fps>strings (e.g.1080p30,1440p60) using explicit--resolutionand--frame_rateflags-ql/-qm/-qh/-qpflagsIssue #7 — docgen manim/vhs not found in PATH when run via venv entry point
ManimRunner._find_manim()checks the active venv'sbin/directory (sys.prefix) before falling back to$PATHVHSRunner._find_vhs()checks$PATHthen common install locations (~/go/bin,/usr/local/bin,/snap/bin)Issue #8 — FREEZE GUARD fires on first run because Manim has no timing data yet
Pipeline.run()now catchesComposeErrorfrom the compose stagetiming.json)--skip-manim)Issues #9, #10, #4 — Scene linting for
weight=BOLDand positional color argsscene_lint.pymodule withlint_scene_file()andlint_scene_dir()functionsweight=BOLD(Pango font substitution) and positional color arguments toText()(cryptic ValueError)docgen scene-lintCLI commandvalidate.pyas a soft check (warns in pre-push, doesn't block)Issue #13 — Configurable ffmpeg timeout
compose.ffmpeg_timeoutconfig property (default 600s, up from hardcoded 300s)compose.py,manim_runner.py, andvhs.pydocgen.yamlIssue #12 — Stale VHS rendered mp4 detection
Composer._vhs_path()now checks if any.tapefile is newer than the rendered mp4compose.warn_stale_vhs(defaulttrue)Issue #2 — Layout validation wired into validator
Validator.validate_segment()now runs layout overlap/edge checks on Manim-type segmentsLayoutValidatorfrommanim_layout.pyCompose path resolution (from Issue #3 lesson 9)
_manim_path()and_resolve_source()now try the configured quality directory first, then fall back to other available quality directoriesvideos/<quality>/path (noscenes/subdirectory) for compatibility with programmatic rendersConfig Additions
New optional properties in
docgen.yaml:Tests
test_scene_lint.py,test_manim_runner.py,test_compose_extras.py)