manim-simplex 0.2.3__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- manim_simplex-0.3.0/.gitattributes +1 -0
- manim_simplex-0.3.0/.gitignore +43 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/.pre-commit-config.yaml +8 -2
- manim_simplex-0.3.0/.release-please-manifest.json +3 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/CHANGELOG.md +30 -0
- manim_simplex-0.3.0/PKG-INFO +273 -0
- manim_simplex-0.3.0/README.md +226 -0
- manim_simplex-0.3.0/decks/README.md +37 -0
- manim_simplex-0.3.0/decks/showcase/deck.toml +30 -0
- manim_simplex-0.3.0/decks/showcase/notes.md +72 -0
- manim_simplex-0.3.0/decks/showcase/slides/__init__.py +7 -0
- manim_simplex-0.3.0/decks/showcase/slides/paper_showcase.py +55 -0
- manim_simplex-0.3.0/decks/showcase/slides/scenes.py +667 -0
- manim_simplex-0.3.0/examples/manim.cfg +3 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/pyproject.toml +52 -6
- manim_simplex-0.3.0/release-please-config.json +10 -0
- manim_simplex-0.3.0/renovate.json +23 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/ruff.toml +7 -1
- manim_simplex-0.3.0/site.toml +15 -0
- manim_simplex-0.3.0/src/simplex/README.md +35 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/__init__.py +7 -7
- manim_simplex-0.3.0/src/simplex/cli/README.md +13 -0
- manim_simplex-0.3.0/src/simplex/cli/__init__.py +5 -0
- manim_simplex-0.3.0/src/simplex/cli/commands.py +392 -0
- manim_simplex-0.3.0/src/simplex/deck/README.md +19 -0
- manim_simplex-0.3.0/src/simplex/deck/__init__.py +7 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/deck.toml +13 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/manim.cfg +3 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/notes.md +27 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/refs.bib +12 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/slides/__init__.py +7 -0
- manim_simplex-0.3.0/src/simplex/deck/_template/slides/intro.py +35 -0
- manim_simplex-0.3.0/src/simplex/deck/config.py +217 -0
- manim_simplex-0.3.0/src/simplex/deck/registry.py +110 -0
- manim_simplex-0.3.0/src/simplex/deck/scaffold.py +86 -0
- manim_simplex-0.3.0/src/simplex/deck/section.py +40 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/code.py +20 -9
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/manifest.py +4 -5
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/plugin.py +2 -2
- manim_simplex-0.3.0/src/simplex/render/README.md +50 -0
- manim_simplex-0.3.0/src/simplex/render/__init__.py +5 -0
- manim_simplex-0.3.0/src/simplex/render/filenames.py +17 -0
- manim_simplex-0.3.0/src/simplex/render/html.py +132 -0
- manim_simplex-0.3.0/src/simplex/render/notes_pdf.py +522 -0
- manim_simplex-0.3.0/src/simplex/render/pdf.py +33 -0
- manim_simplex-0.3.0/src/simplex/render/pptx.py +32 -0
- manim_simplex-0.3.0/src/simplex/render/reconcile.py +349 -0
- manim_simplex-0.3.0/src/simplex/render/runner.py +121 -0
- manim_simplex-0.3.0/src/simplex/render/thumbnail.py +374 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/theme/__init__.py +10 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/theme/presets.py +4 -0
- manim_simplex-0.3.0/src/simplex/theme/pygments_style.py +64 -0
- manim_simplex-0.3.0/src/simplex/theme/styles/README.md +10 -0
- manim_simplex-0.3.0/src/simplex/theme/styles/__init__.py +20 -0
- manim_simplex-0.3.0/src/simplex/theme/styles/simplex_pycharm.py +75 -0
- manim_simplex-0.3.0/src/simplex/theme/styles/simplex_solarized_light.py +79 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/theme/tokens.py +10 -1
- manim_simplex-0.3.0/src/simplex/theme/web_css.py +82 -0
- manim_simplex-0.3.0/src/simplex/web/README.md +34 -0
- manim_simplex-0.3.0/src/simplex/web/__init__.py +1 -0
- manim_simplex-0.3.0/src/simplex/web/bibliography.py +248 -0
- manim_simplex-0.3.0/src/simplex/web/bibtex.py +129 -0
- manim_simplex-0.3.0/src/simplex/web/builder.py +400 -0
- manim_simplex-0.3.0/src/simplex/web/callouts.py +163 -0
- manim_simplex-0.3.0/src/simplex/web/citations.py +118 -0
- manim_simplex-0.3.0/src/simplex/web/equations.py +79 -0
- manim_simplex-0.3.0/src/simplex/web/notes.py +151 -0
- manim_simplex-0.3.0/src/simplex/web/refs.py +61 -0
- manim_simplex-0.3.0/src/simplex/web/sidenotes.py +79 -0
- manim_simplex-0.3.0/src/simplex/web/site_config.py +83 -0
- manim_simplex-0.3.0/src/simplex/web/slide_ref.py +90 -0
- manim_simplex-0.3.0/src/simplex/web/static/README.md +28 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-400-italic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-400-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-700-italic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-700-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/lato/lato-latin-900-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-400-italic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-400-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-700-italic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-700-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/fonts/merriweather/merriweather-latin-900-normal.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/htmx.min.js +1 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/auto-render.min.js +1 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/katex.min.css +1 -0
- manim_simplex-0.3.0/src/simplex/web/static/katex/katex.min.js +1 -0
- manim_simplex-0.3.0/src/simplex/web/static/lucide/README.md +7 -0
- manim_simplex-0.3.0/src/simplex/web/static/lucide/lucide.min.js +12 -0
- manim_simplex-0.3.0/src/simplex/web/static/notes.js +189 -0
- manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reset.css +30 -0
- manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reveal.css +8 -0
- manim_simplex-0.3.0/src/simplex/web/static/reveal.js/reveal.js +9 -0
- manim_simplex-0.3.0/src/simplex/web/static/simplex.css +2109 -0
- manim_simplex-0.3.0/src/simplex/web/static/tailwind.css +2 -0
- manim_simplex-0.3.0/src/simplex/web/static/tailwind.input.css +16 -0
- manim_simplex-0.3.0/src/simplex/web/static/viewer.js +497 -0
- manim_simplex-0.3.0/src/simplex/web/templates/README.md +19 -0
- manim_simplex-0.3.0/src/simplex/web/templates/_carousel.html +117 -0
- manim_simplex-0.3.0/src/simplex/web/templates/base.html +128 -0
- manim_simplex-0.3.0/src/simplex/web/templates/deck.html +169 -0
- manim_simplex-0.3.0/src/simplex/web/templates/index.html +20 -0
- manim_simplex-0.3.0/src/simplex/web/templates/revealjs.html.j2 +379 -0
- manim_simplex-0.3.0/src/simplex/web/templates/section.html +74 -0
- manim_simplex-0.3.0/src/simplex/web/vendor.py +247 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/README.md +9 -4
- manim_simplex-0.3.0/tests/cli/README.md +15 -0
- manim_simplex-0.3.0/tests/cli/__init__.py +0 -0
- manim_simplex-0.3.0/tests/cli/test_help.py +12 -0
- manim_simplex-0.3.0/tests/cli/test_new.py +42 -0
- manim_simplex-0.3.0/tests/cli/test_render.py +108 -0
- manim_simplex-0.3.0/tests/deck/README.md +8 -0
- manim_simplex-0.3.0/tests/deck/__init__.py +0 -0
- manim_simplex-0.3.0/tests/deck/test_config.py +72 -0
- manim_simplex-0.3.0/tests/deck/test_registry.py +76 -0
- manim_simplex-0.3.0/tests/deck/test_scaffold.py +74 -0
- manim_simplex-0.3.0/tests/deck/test_section.py +32 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/README.md +1 -1
- manim_simplex-0.3.0/tests/engine/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_code.py +28 -12
- manim_simplex-0.3.0/tests/mobjects/__init__.py +0 -0
- manim_simplex-0.3.0/tests/render/README.md +7 -0
- manim_simplex-0.3.0/tests/render/__init__.py +0 -0
- manim_simplex-0.3.0/tests/render/test_html.py +96 -0
- manim_simplex-0.3.0/tests/render/test_notes_pdf.py +84 -0
- manim_simplex-0.3.0/tests/render/test_reconcile.py +177 -0
- manim_simplex-0.3.0/tests/render/test_runner.py +101 -0
- manim_simplex-0.3.0/tests/render/test_thumbnail.py +226 -0
- manim_simplex-0.3.0/tests/slides/__init__.py +0 -0
- manim_simplex-0.3.0/tests/theme/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/theme/test_tokens.py +31 -0
- manim_simplex-0.3.0/tests/theme/test_web_css.py +39 -0
- manim_simplex-0.3.0/tests/web/README.md +18 -0
- manim_simplex-0.3.0/tests/web/__init__.py +0 -0
- manim_simplex-0.3.0/tests/web/test_bibliography.py +170 -0
- manim_simplex-0.3.0/tests/web/test_builder.py +186 -0
- manim_simplex-0.3.0/tests/web/test_callouts.py +130 -0
- manim_simplex-0.3.0/tests/web/test_citations.py +72 -0
- manim_simplex-0.3.0/tests/web/test_equations.py +74 -0
- manim_simplex-0.3.0/tests/web/test_notes.py +38 -0
- manim_simplex-0.3.0/tests/web/test_sidenotes.py +60 -0
- manim_simplex-0.3.0/tests/web/test_site_config.py +70 -0
- manim_simplex-0.3.0/tests/web/test_slide_ref.py +27 -0
- manim_simplex-0.3.0/tools/check_readmes.py +54 -0
- manim_simplex-0.3.0/tools/vendor_web_assets.py +36 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/uv.lock +219 -1
- manim_simplex-0.2.3/.gitignore +0 -30
- manim_simplex-0.2.3/PKG-INFO +0 -286
- manim_simplex-0.2.3/README.md +0 -253
- manim_simplex-0.2.3/src/simplex/theme/pygments_style.py +0 -79
- manim_simplex-0.2.3/src/simplex/theme/web_css.py +0 -33
- manim_simplex-0.2.3/tests/theme/test_web_css.py +0 -18
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/.python-version +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/LICENSE +0 -0
- {manim_simplex-0.2.3/examples → manim_simplex-0.3.0/decks/showcase}/manim.cfg +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/examples/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/examples/glyph_map_demo.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/examples/hello_slide.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/examples/outline_slide.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/examples/theme_demo.py +0 -0
- /manim_simplex-0.2.3/src/simplex/py.typed → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/.gitkeep +0 -0
- /manim_simplex-0.2.3/tests/__init__.py → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/code/.gitkeep +0 -0
- /manim_simplex-0.2.3/tests/engine/__init__.py → /manim_simplex-0.3.0/src/simplex/deck/_template/assets/figures/.gitkeep +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/animations.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/debug.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/defaults.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/dynamics.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/geometry.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/ghost_fade.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/glyph_map.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/region.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/scaling.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/engine/text.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/array.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/graph.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/outline.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/mobjects/paper.py +0 -0
- /manim_simplex-0.2.3/tests/mobjects/__init__.py → /manim_simplex-0.3.0/src/simplex/py.typed +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/section.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/slides/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/slides/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/slides/base.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/slides/chrome.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/slides/outline.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/theme/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/src/simplex/theme/context.py +0 -0
- /manim_simplex-0.2.3/tests/slides/__init__.py → /manim_simplex-0.3.0/src/simplex/web/static/.gitkeep +0 -0
- {manim_simplex-0.2.3/tests/theme → manim_simplex-0.3.0/tests}/__init__.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_animations.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_debug.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_dynamics.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_geometry.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_ghost_fade.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_glyph_map.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_region.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_scaling.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/engine/test_text.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/mobjects/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/mobjects/test_graph.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/mobjects/test_outline.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/mobjects/test_paper.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/slides/README.md +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/slides/test_base.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/slides/test_chrome.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/slides/test_outline.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/test_manifest.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/test_public_api.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/test_section.py +0 -0
- {manim_simplex-0.2.3 → manim_simplex-0.3.0}/tests/theme/README.md +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.sh text eol=lf
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
__pycache__/
|
|
2
|
+
*.py[cod]
|
|
3
|
+
*$py.class
|
|
4
|
+
*.so
|
|
5
|
+
|
|
6
|
+
# Build artifacts
|
|
7
|
+
build/
|
|
8
|
+
dist/
|
|
9
|
+
*.egg-info/
|
|
10
|
+
.eggs/
|
|
11
|
+
|
|
12
|
+
# uv
|
|
13
|
+
.venv/
|
|
14
|
+
|
|
15
|
+
# Tool caches
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
.pytest_cache/
|
|
18
|
+
.basedpyright/
|
|
19
|
+
.simplex_cache/
|
|
20
|
+
.mypy_cache/
|
|
21
|
+
|
|
22
|
+
# Manim output
|
|
23
|
+
media/
|
|
24
|
+
# manim-slides output (rooted, so tests/slides/ stays tracked)
|
|
25
|
+
/slides/
|
|
26
|
+
decks/**/slides/*.json
|
|
27
|
+
decks/**/slides/files/
|
|
28
|
+
|
|
29
|
+
# Generated site
|
|
30
|
+
site/
|
|
31
|
+
|
|
32
|
+
# Vendored web runtime assets (fetched/compiled on demand by simplex.web.vendor)
|
|
33
|
+
src/simplex/web/static/tailwind.css
|
|
34
|
+
src/simplex/web/static/htmx.min.js
|
|
35
|
+
src/simplex/web/static/katex/
|
|
36
|
+
src/simplex/web/static/reveal.js/
|
|
37
|
+
src/simplex/web/static/fonts/
|
|
38
|
+
|
|
39
|
+
# Editors
|
|
40
|
+
.idea/
|
|
41
|
+
.vscode/
|
|
42
|
+
*.swp
|
|
43
|
+
.DS_Store
|
|
@@ -53,11 +53,17 @@ repos:
|
|
|
53
53
|
- id: codespell
|
|
54
54
|
additional_dependencies:
|
|
55
55
|
- tomli
|
|
56
|
-
args: [--ignore-words-list=manim, mobjects, mobject]
|
|
57
|
-
exclude: ^(uv\.lock|.*\.svg)$
|
|
56
|
+
args: [--ignore-words-list=manim, mobjects, mobject, pres]
|
|
57
|
+
exclude: ^(uv\.lock|.*\.svg|.*\.bib)$
|
|
58
58
|
|
|
59
59
|
- repo: local
|
|
60
60
|
hooks:
|
|
61
|
+
- id: check-readmes
|
|
62
|
+
name: Every package directory has a README <= 100 lines
|
|
63
|
+
entry: python tools/check_readmes.py
|
|
64
|
+
language: system
|
|
65
|
+
pass_filenames: false
|
|
66
|
+
always_run: true
|
|
61
67
|
- id: github-issues
|
|
62
68
|
name: GitHub issues link check
|
|
63
69
|
description: Check issues (and PR) links are matching number.
|
|
@@ -4,8 +4,38 @@ All notable changes to `manim-simplex` are documented here.
|
|
|
4
4
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/);
|
|
5
5
|
this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.3.0](https://github.com/shlomi-perles/simplex/compare/manim-simplex-v0.2.3...manim-simplex-v0.3.0) (2026-05-25)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* consolidate Simplex package ([7e1aedb](https://github.com/shlomi-perles/simplex/commit/7e1aedbf646e9d90ffb2fc22a852e5a5d3042e75))
|
|
13
|
+
* enhance media handling and presentation features ([9dff7cc](https://github.com/shlomi-perles/simplex/commit/9dff7ccfc4bfbe79f5bffd1c01d0bac090207399))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
* handle string duration in _row_duration and update tests for consistency ([612fd3c](https://github.com/shlomi-perles/simplex/commit/612fd3c24e1c9c3ee7dbbe1a42080211ba6c927d))
|
|
19
|
+
|
|
7
20
|
## [Unreleased]
|
|
8
21
|
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- `simplex` CLI, deck discovery/scaffolding, render orchestration, static web
|
|
25
|
+
portal builder, notes/citation rendering, and bundled deck template now ship
|
|
26
|
+
inside `manim-simplex`.
|
|
27
|
+
- Release Please configuration and release workflow for uv builds, PyPI
|
|
28
|
+
Trusted Publishing, and template update dispatch.
|
|
29
|
+
- Renovate configuration for dependency and lockfile maintenance.
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
|
|
33
|
+
- **BREAKING:** `manim-simplex` is now the only PyPI distribution that owns the
|
|
34
|
+
`simplex` package namespace. The former `simplex-web` package is folded into
|
|
35
|
+
this distribution.
|
|
36
|
+
- CI now checks the CLI/web stack, vendors web assets before wheel builds, and
|
|
37
|
+
smoke-renders the bundled showcase deck.
|
|
38
|
+
|
|
9
39
|
## [0.2.3] - 2026-05-25
|
|
10
40
|
|
|
11
41
|
### Added
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: manim-simplex
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Manim plugin and lecture-site CLI for Simplex presentations.
|
|
5
|
+
Project-URL: Changelog, https://github.com/shlomi-perles/simplex/blob/main/CHANGELOG.md
|
|
6
|
+
Project-URL: Homepage, https://github.com/shlomi-perles/simplex
|
|
7
|
+
Project-URL: Issues, https://github.com/shlomi-perles/simplex/issues
|
|
8
|
+
Project-URL: Repository, https://github.com/shlomi-perles/simplex
|
|
9
|
+
Author: Shlomi Perles
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: animation,computer-science,education,lecture,manim,manim-slides,math,presentation,static-site
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Environment :: Console
|
|
15
|
+
Classifier: Intended Audience :: Education
|
|
16
|
+
Classifier: Intended Audience :: Science/Research
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Classifier: Operating System :: OS Independent
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
22
|
+
Classifier: Topic :: Education
|
|
23
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
|
|
24
|
+
Classifier: Topic :: Multimedia :: Graphics
|
|
25
|
+
Classifier: Topic :: Multimedia :: Video
|
|
26
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
27
|
+
Classifier: Typing :: Typed
|
|
28
|
+
Requires-Python: >=3.13
|
|
29
|
+
Requires-Dist: av>=15.0
|
|
30
|
+
Requires-Dist: jinja2>=3.1
|
|
31
|
+
Requires-Dist: manim-slides>=5.1.7
|
|
32
|
+
Requires-Dist: manim>=0.20.1
|
|
33
|
+
Requires-Dist: markdown-it-py>=3.0
|
|
34
|
+
Requires-Dist: mdit-py-plugins>=0.4
|
|
35
|
+
Requires-Dist: pillow>=11.0
|
|
36
|
+
Requires-Dist: platformdirs>=4.2
|
|
37
|
+
Requires-Dist: pydantic-settings>=2.3
|
|
38
|
+
Requires-Dist: pydantic>=2.7
|
|
39
|
+
Requires-Dist: pygments>=2.18
|
|
40
|
+
Requires-Dist: pymupdf>=1.27.2.3
|
|
41
|
+
Requires-Dist: rich>=13.7
|
|
42
|
+
Requires-Dist: structlog>=24.1
|
|
43
|
+
Requires-Dist: tomli-w>=1.0
|
|
44
|
+
Requires-Dist: typer>=0.12
|
|
45
|
+
Requires-Dist: watchfiles>=0.24
|
|
46
|
+
Description-Content-Type: text/markdown
|
|
47
|
+
|
|
48
|
+
# Simplex
|
|
49
|
+
|
|
50
|
+
[](https://pypi.org/project/manim-simplex/)
|
|
51
|
+
[](https://pypi.org/project/manim-simplex/)
|
|
52
|
+
[](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml)
|
|
53
|
+
[](https://github.com/shlomi-perles/simplex/blob/main/LICENSE)
|
|
54
|
+
|
|
55
|
+
Simplex is a toolkit for Manim lecture projects. The repository is named
|
|
56
|
+
`simplex`, and the PyPI distribution is named `manim-simplex` because the bare
|
|
57
|
+
`simplex` package name is already taken on PyPI. It ships one Python package
|
|
58
|
+
namespace, `simplex`, with:
|
|
59
|
+
|
|
60
|
+
- a Manim plugin (`plugins = simplex`);
|
|
61
|
+
- theme tokens, mobjects, layout regions, slide bases, and animation helpers;
|
|
62
|
+
- a deck manifest schema and render reconciliation pipeline;
|
|
63
|
+
- the `simplex` CLI for deck scaffolding, rendering, site building, serving,
|
|
64
|
+
testing, and diagnostics;
|
|
65
|
+
- a static lecture portal with notes, citations, math rendering, thumbnails,
|
|
66
|
+
RevealJS playback, and GitHub Pages-friendly output.
|
|
67
|
+
|
|
68
|
+
The CLI and plugin intentionally live in one distribution so consumers only
|
|
69
|
+
depend on `manim-simplex`.
|
|
70
|
+
|
|
71
|
+
## Requirements
|
|
72
|
+
|
|
73
|
+
- Python 3.13+
|
|
74
|
+
- Manim Community 0.20.1+
|
|
75
|
+
- manim-slides 5.1.7+
|
|
76
|
+
- FFmpeg, Cairo, Pango, and a TeX distribution when rendering TeX. See the
|
|
77
|
+
Manim installation guide: https://docs.manim.community/en/stable/installation.html
|
|
78
|
+
|
|
79
|
+
Typical system packages:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
sudo apt-get install texlive-latex-extra texlive-fonts-recommended ffmpeg \
|
|
83
|
+
libcairo2-dev libpango1.0-dev
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```powershell
|
|
87
|
+
winget install MiKTeX.MiKTeX
|
|
88
|
+
winget install Gyan.FFmpeg
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Install
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
pip install manim-simplex
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
With uv:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
uv add manim-simplex
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Verify that Manim can discover the plugin:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
python -m manim plugins -l
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The output should include `simplex`.
|
|
110
|
+
|
|
111
|
+
## Configure Manim
|
|
112
|
+
|
|
113
|
+
Enable the plugin in the `manim.cfg` next to your scenes or deck:
|
|
114
|
+
|
|
115
|
+
```ini
|
|
116
|
+
[CLI]
|
|
117
|
+
plugins = simplex
|
|
118
|
+
save_sections = True
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Manim imports `simplex.plugin` through the `manim.plugins` entry point. The
|
|
122
|
+
plugin applies the active Simplex theme to Manim defaults, registers Pygments
|
|
123
|
+
styles, sets the TeX template, sets the background color, and enables section
|
|
124
|
+
JSON output.
|
|
125
|
+
|
|
126
|
+
## Quick Start
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
from manim import ORIGIN, MathTex, Write
|
|
130
|
+
|
|
131
|
+
from simplex import BaseSlide, make_chrome, presets
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
class HelloSlide(BaseSlide):
|
|
135
|
+
def setup(self) -> None:
|
|
136
|
+
super().setup()
|
|
137
|
+
chrome = make_chrome(
|
|
138
|
+
presets.SIMPLEX_DARK,
|
|
139
|
+
self.region,
|
|
140
|
+
header="Hello, Simplex",
|
|
141
|
+
)
|
|
142
|
+
self.add_to_canvas(**chrome.mobjects)
|
|
143
|
+
self.region = chrome.body_region
|
|
144
|
+
|
|
145
|
+
def construct(self) -> None:
|
|
146
|
+
eq = MathTex(r"e^{i\pi} + 1 = 0")
|
|
147
|
+
self.region.place(eq, ORIGIN)
|
|
148
|
+
self.play(Write(eq))
|
|
149
|
+
self.next_slide()
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Render as a slide deck:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
uv run manim-slides render path/to/scene.py HelloSlide
|
|
156
|
+
uv run manim-slides present HelloSlide
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Or create a lecture-site deck and build the portal:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
uv run simplex new algorithms/hash-tables
|
|
163
|
+
uv run simplex render hash-tables
|
|
164
|
+
uv run simplex build
|
|
165
|
+
uv run simplex serve
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Public Surface
|
|
169
|
+
|
|
170
|
+
| Module | Public surface |
|
|
171
|
+
| --- | --- |
|
|
172
|
+
| `simplex.plugin` | `activate()` entry point used by Manim. |
|
|
173
|
+
| `simplex.slides` | `BaseSlide`, `OutlineScene`, `OutlinePart`, `Chrome`, `make_chrome`. |
|
|
174
|
+
| `simplex.engine` | `Region`, `Remove`, `clear_scene`, `exit_for`, `register_exit`, `set_exit_animation`, `HighlightResult`, `apply_theme_defaults`. |
|
|
175
|
+
| `simplex.mobjects` | `Node`, `Edge`, `ArrayMob`, `ArrayEntry`, `ArrayPointer`, `OutlineProgressBar`, `Paper`, `ShowPaper`, `DismissPaper`, `PickPage`. |
|
|
176
|
+
| `simplex.theme` | `Theme`, `Palette`, `Typography`, `Spacing`, `Motion`, `LatexProfile`, `WebPalette`, `active_theme`, `get_active_theme`, `presets`, `render_web_css`. |
|
|
177
|
+
| `simplex.manifest` | `DeckManifest`, `MainSlide`, `Subsection`, the manifest schema written by the render pipeline. |
|
|
178
|
+
| `simplex.deck` | `DeckConfig`, `discover`, `scaffold`, section metadata, bundled deck template. |
|
|
179
|
+
| `simplex.render` | Manim runner, manifest reconciliation, thumbnails, HTML, PDF, PPTX, notes PDF, filenames. |
|
|
180
|
+
| `simplex.web` | Portal builder, notes renderer, citations, refs, templates, static assets, live reload. |
|
|
181
|
+
| `simplex.cli` | Typer application installed as the `simplex` command. |
|
|
182
|
+
|
|
183
|
+
## CLI
|
|
184
|
+
|
|
185
|
+
| Command | Purpose |
|
|
186
|
+
| --- | --- |
|
|
187
|
+
| `simplex new <slug>` | Create `decks/<slug>/` from the bundled template. |
|
|
188
|
+
| `simplex new <section>/<slug>` | Create a deck inside a named section. |
|
|
189
|
+
| `simplex init [dir]` | Create a lectures repo from the GitHub template. |
|
|
190
|
+
| `simplex render <slug>` | Render one deck into `site/decks/<slug>/`. |
|
|
191
|
+
| `simplex render <slug>::<Scene>` | Render one scene from a deck. |
|
|
192
|
+
| `simplex build` | Render decks and build the static portal under `site/`. |
|
|
193
|
+
| `simplex build --no-render` | Rebuild portal HTML from existing render output. |
|
|
194
|
+
| `simplex serve [--watch]` | Serve `site/` locally, optionally with live reload. |
|
|
195
|
+
| `simplex test` | Smoke-render decks by rendering only the first animation. |
|
|
196
|
+
| `simplex clean` | Remove generated `site/` and `media/` output. |
|
|
197
|
+
| `simplex doctor` | Check required binaries on `PATH`. |
|
|
198
|
+
|
|
199
|
+
## Deck Layout
|
|
200
|
+
|
|
201
|
+
`simplex new hash-tables` creates:
|
|
202
|
+
|
|
203
|
+
```text
|
|
204
|
+
decks/hash-tables/
|
|
205
|
+
|-- deck.toml
|
|
206
|
+
|-- manim.cfg
|
|
207
|
+
|-- notes.md
|
|
208
|
+
|-- refs.bib
|
|
209
|
+
|-- assets/
|
|
210
|
+
`-- slides/
|
|
211
|
+
|-- __init__.py
|
|
212
|
+
`-- intro.py
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
The important fields in `deck.toml` are:
|
|
216
|
+
|
|
217
|
+
```toml
|
|
218
|
+
slug = "hash-tables"
|
|
219
|
+
title = "Hash Tables"
|
|
220
|
+
summary = "A one-line deck summary."
|
|
221
|
+
theme = "simplex_dark"
|
|
222
|
+
quality = "high_quality"
|
|
223
|
+
entrypoints = ["slides.intro:Intro", "slides.intro:KeyIdea"]
|
|
224
|
+
|
|
225
|
+
[slides."Key Idea"]
|
|
226
|
+
notes_anchor = "key-idea"
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Development
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
git clone https://github.com/shlomi-perles/simplex.git
|
|
233
|
+
cd simplex
|
|
234
|
+
uv sync --all-extras
|
|
235
|
+
uv run pre-commit install
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Useful checks:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
python tools/check_readmes.py
|
|
242
|
+
uv run ruff check .
|
|
243
|
+
uv run ruff format --check .
|
|
244
|
+
uv run basedpyright
|
|
245
|
+
uv run pytest -q
|
|
246
|
+
uv run python tools/vendor_web_assets.py
|
|
247
|
+
uv build --no-sources
|
|
248
|
+
uvx twine check dist/*
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Run smoke tests locally:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
uv run python -c "import simplex.plugin; simplex.plugin.activate(); print('ok')"
|
|
255
|
+
uv run manim plugins -l
|
|
256
|
+
uv run simplex --help
|
|
257
|
+
uv run simplex test --only showcase
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## Release
|
|
261
|
+
|
|
262
|
+
Releases are automated through Release Please and PyPI Trusted Publishing.
|
|
263
|
+
Commit changes using Conventional Commits (`feat:`, `fix:`, `chore:`). When
|
|
264
|
+
changes land on `main`, Release Please opens or updates a release PR. Merging
|
|
265
|
+
that PR creates the GitHub release, builds the package with uv, publishes
|
|
266
|
+
`manim-simplex` to PyPI via OIDC, and dispatches a template update workflow.
|
|
267
|
+
|
|
268
|
+
Manual version bumps and chained `simplex-web` releases are no longer part of
|
|
269
|
+
the release process.
|
|
270
|
+
|
|
271
|
+
## License
|
|
272
|
+
|
|
273
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Simplex
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/manim-simplex/)
|
|
4
|
+
[](https://pypi.org/project/manim-simplex/)
|
|
5
|
+
[](https://github.com/shlomi-perles/simplex/actions/workflows/ci.yml)
|
|
6
|
+
[](https://github.com/shlomi-perles/simplex/blob/main/LICENSE)
|
|
7
|
+
|
|
8
|
+
Simplex is a toolkit for Manim lecture projects. The repository is named
|
|
9
|
+
`simplex`, and the PyPI distribution is named `manim-simplex` because the bare
|
|
10
|
+
`simplex` package name is already taken on PyPI. It ships one Python package
|
|
11
|
+
namespace, `simplex`, with:
|
|
12
|
+
|
|
13
|
+
- a Manim plugin (`plugins = simplex`);
|
|
14
|
+
- theme tokens, mobjects, layout regions, slide bases, and animation helpers;
|
|
15
|
+
- a deck manifest schema and render reconciliation pipeline;
|
|
16
|
+
- the `simplex` CLI for deck scaffolding, rendering, site building, serving,
|
|
17
|
+
testing, and diagnostics;
|
|
18
|
+
- a static lecture portal with notes, citations, math rendering, thumbnails,
|
|
19
|
+
RevealJS playback, and GitHub Pages-friendly output.
|
|
20
|
+
|
|
21
|
+
The CLI and plugin intentionally live in one distribution so consumers only
|
|
22
|
+
depend on `manim-simplex`.
|
|
23
|
+
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
- Python 3.13+
|
|
27
|
+
- Manim Community 0.20.1+
|
|
28
|
+
- manim-slides 5.1.7+
|
|
29
|
+
- FFmpeg, Cairo, Pango, and a TeX distribution when rendering TeX. See the
|
|
30
|
+
Manim installation guide: https://docs.manim.community/en/stable/installation.html
|
|
31
|
+
|
|
32
|
+
Typical system packages:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
sudo apt-get install texlive-latex-extra texlive-fonts-recommended ffmpeg \
|
|
36
|
+
libcairo2-dev libpango1.0-dev
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```powershell
|
|
40
|
+
winget install MiKTeX.MiKTeX
|
|
41
|
+
winget install Gyan.FFmpeg
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Install
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pip install manim-simplex
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
With uv:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
uv add manim-simplex
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Verify that Manim can discover the plugin:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
python -m manim plugins -l
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
The output should include `simplex`.
|
|
63
|
+
|
|
64
|
+
## Configure Manim
|
|
65
|
+
|
|
66
|
+
Enable the plugin in the `manim.cfg` next to your scenes or deck:
|
|
67
|
+
|
|
68
|
+
```ini
|
|
69
|
+
[CLI]
|
|
70
|
+
plugins = simplex
|
|
71
|
+
save_sections = True
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Manim imports `simplex.plugin` through the `manim.plugins` entry point. The
|
|
75
|
+
plugin applies the active Simplex theme to Manim defaults, registers Pygments
|
|
76
|
+
styles, sets the TeX template, sets the background color, and enables section
|
|
77
|
+
JSON output.
|
|
78
|
+
|
|
79
|
+
## Quick Start
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
from manim import ORIGIN, MathTex, Write
|
|
83
|
+
|
|
84
|
+
from simplex import BaseSlide, make_chrome, presets
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class HelloSlide(BaseSlide):
|
|
88
|
+
def setup(self) -> None:
|
|
89
|
+
super().setup()
|
|
90
|
+
chrome = make_chrome(
|
|
91
|
+
presets.SIMPLEX_DARK,
|
|
92
|
+
self.region,
|
|
93
|
+
header="Hello, Simplex",
|
|
94
|
+
)
|
|
95
|
+
self.add_to_canvas(**chrome.mobjects)
|
|
96
|
+
self.region = chrome.body_region
|
|
97
|
+
|
|
98
|
+
def construct(self) -> None:
|
|
99
|
+
eq = MathTex(r"e^{i\pi} + 1 = 0")
|
|
100
|
+
self.region.place(eq, ORIGIN)
|
|
101
|
+
self.play(Write(eq))
|
|
102
|
+
self.next_slide()
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Render as a slide deck:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
uv run manim-slides render path/to/scene.py HelloSlide
|
|
109
|
+
uv run manim-slides present HelloSlide
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Or create a lecture-site deck and build the portal:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
uv run simplex new algorithms/hash-tables
|
|
116
|
+
uv run simplex render hash-tables
|
|
117
|
+
uv run simplex build
|
|
118
|
+
uv run simplex serve
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Public Surface
|
|
122
|
+
|
|
123
|
+
| Module | Public surface |
|
|
124
|
+
| --- | --- |
|
|
125
|
+
| `simplex.plugin` | `activate()` entry point used by Manim. |
|
|
126
|
+
| `simplex.slides` | `BaseSlide`, `OutlineScene`, `OutlinePart`, `Chrome`, `make_chrome`. |
|
|
127
|
+
| `simplex.engine` | `Region`, `Remove`, `clear_scene`, `exit_for`, `register_exit`, `set_exit_animation`, `HighlightResult`, `apply_theme_defaults`. |
|
|
128
|
+
| `simplex.mobjects` | `Node`, `Edge`, `ArrayMob`, `ArrayEntry`, `ArrayPointer`, `OutlineProgressBar`, `Paper`, `ShowPaper`, `DismissPaper`, `PickPage`. |
|
|
129
|
+
| `simplex.theme` | `Theme`, `Palette`, `Typography`, `Spacing`, `Motion`, `LatexProfile`, `WebPalette`, `active_theme`, `get_active_theme`, `presets`, `render_web_css`. |
|
|
130
|
+
| `simplex.manifest` | `DeckManifest`, `MainSlide`, `Subsection`, the manifest schema written by the render pipeline. |
|
|
131
|
+
| `simplex.deck` | `DeckConfig`, `discover`, `scaffold`, section metadata, bundled deck template. |
|
|
132
|
+
| `simplex.render` | Manim runner, manifest reconciliation, thumbnails, HTML, PDF, PPTX, notes PDF, filenames. |
|
|
133
|
+
| `simplex.web` | Portal builder, notes renderer, citations, refs, templates, static assets, live reload. |
|
|
134
|
+
| `simplex.cli` | Typer application installed as the `simplex` command. |
|
|
135
|
+
|
|
136
|
+
## CLI
|
|
137
|
+
|
|
138
|
+
| Command | Purpose |
|
|
139
|
+
| --- | --- |
|
|
140
|
+
| `simplex new <slug>` | Create `decks/<slug>/` from the bundled template. |
|
|
141
|
+
| `simplex new <section>/<slug>` | Create a deck inside a named section. |
|
|
142
|
+
| `simplex init [dir]` | Create a lectures repo from the GitHub template. |
|
|
143
|
+
| `simplex render <slug>` | Render one deck into `site/decks/<slug>/`. |
|
|
144
|
+
| `simplex render <slug>::<Scene>` | Render one scene from a deck. |
|
|
145
|
+
| `simplex build` | Render decks and build the static portal under `site/`. |
|
|
146
|
+
| `simplex build --no-render` | Rebuild portal HTML from existing render output. |
|
|
147
|
+
| `simplex serve [--watch]` | Serve `site/` locally, optionally with live reload. |
|
|
148
|
+
| `simplex test` | Smoke-render decks by rendering only the first animation. |
|
|
149
|
+
| `simplex clean` | Remove generated `site/` and `media/` output. |
|
|
150
|
+
| `simplex doctor` | Check required binaries on `PATH`. |
|
|
151
|
+
|
|
152
|
+
## Deck Layout
|
|
153
|
+
|
|
154
|
+
`simplex new hash-tables` creates:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
decks/hash-tables/
|
|
158
|
+
|-- deck.toml
|
|
159
|
+
|-- manim.cfg
|
|
160
|
+
|-- notes.md
|
|
161
|
+
|-- refs.bib
|
|
162
|
+
|-- assets/
|
|
163
|
+
`-- slides/
|
|
164
|
+
|-- __init__.py
|
|
165
|
+
`-- intro.py
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
The important fields in `deck.toml` are:
|
|
169
|
+
|
|
170
|
+
```toml
|
|
171
|
+
slug = "hash-tables"
|
|
172
|
+
title = "Hash Tables"
|
|
173
|
+
summary = "A one-line deck summary."
|
|
174
|
+
theme = "simplex_dark"
|
|
175
|
+
quality = "high_quality"
|
|
176
|
+
entrypoints = ["slides.intro:Intro", "slides.intro:KeyIdea"]
|
|
177
|
+
|
|
178
|
+
[slides."Key Idea"]
|
|
179
|
+
notes_anchor = "key-idea"
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Development
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
git clone https://github.com/shlomi-perles/simplex.git
|
|
186
|
+
cd simplex
|
|
187
|
+
uv sync --all-extras
|
|
188
|
+
uv run pre-commit install
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Useful checks:
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
python tools/check_readmes.py
|
|
195
|
+
uv run ruff check .
|
|
196
|
+
uv run ruff format --check .
|
|
197
|
+
uv run basedpyright
|
|
198
|
+
uv run pytest -q
|
|
199
|
+
uv run python tools/vendor_web_assets.py
|
|
200
|
+
uv build --no-sources
|
|
201
|
+
uvx twine check dist/*
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Run smoke tests locally:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
uv run python -c "import simplex.plugin; simplex.plugin.activate(); print('ok')"
|
|
208
|
+
uv run manim plugins -l
|
|
209
|
+
uv run simplex --help
|
|
210
|
+
uv run simplex test --only showcase
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Release
|
|
214
|
+
|
|
215
|
+
Releases are automated through Release Please and PyPI Trusted Publishing.
|
|
216
|
+
Commit changes using Conventional Commits (`feat:`, `fix:`, `chore:`). When
|
|
217
|
+
changes land on `main`, Release Please opens or updates a release PR. Merging
|
|
218
|
+
that PR creates the GitHub release, builds the package with uv, publishes
|
|
219
|
+
`manim-simplex` to PyPI via OIDC, and dispatches a template update workflow.
|
|
220
|
+
|
|
221
|
+
Manual version bumps and chained `simplex-web` releases are no longer part of
|
|
222
|
+
the release process.
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# decks/
|
|
2
|
+
|
|
3
|
+
Author content lives here, one directory per deck.
|
|
4
|
+
|
|
5
|
+
Each deck contains:
|
|
6
|
+
- `deck.toml` -- DeckConfig fields (slug, title, summary, tags, theme, scenes, quality)
|
|
7
|
+
- `slides.py` -- vanilla Manim subclassing `simplex.slides.*`
|
|
8
|
+
- `notes.md` -- academic-style notes (KaTeX math, `^[sidenotes]`,
|
|
9
|
+
`[slide:N]` jump links, `\cite{key}` citations)
|
|
10
|
+
- `refs.bib` -- optional BibTeX bibliography; cited entries appear as
|
|
11
|
+
alpha-style `[Auth23]` tags + an auto-rendered References section
|
|
12
|
+
- `assets/` -- optional images / data
|
|
13
|
+
|
|
14
|
+
Scaffold a new deck with:
|
|
15
|
+
|
|
16
|
+
uv run simplex new my-slug
|
|
17
|
+
|
|
18
|
+
Directories whose name starts with `_` (e.g. `_template/`) are skipped by `discover()`.
|
|
19
|
+
|
|
20
|
+
Force a re-render or re-render only a few scenes:
|
|
21
|
+
|
|
22
|
+
uv run simplex render my-slug --force
|
|
23
|
+
uv run simplex render my-slug --scene SceneA --scene SceneB
|
|
24
|
+
|
|
25
|
+
See `src/simplex/render/README.md` for the full cache + re-render semantics.
|
|
26
|
+
|
|
27
|
+
## Bundled decks
|
|
28
|
+
|
|
29
|
+
- `_template/` -- starter copied by `simplex new` (skipped by `discover()`).
|
|
30
|
+
- `showcase/` -- canonical demo of every Simplex-specific helper:
|
|
31
|
+
- `engine.text`: `Caption`, `TexPage` (fixed-width minipage), `color_tex`
|
|
32
|
+
- `engine.code`: `code_block` + `highlight_code_lines` + `code_explain` + `transform_code_lines`
|
|
33
|
+
- `engine.geometry`: convex hull + surrounding rectangle
|
|
34
|
+
- `engine.region`: direction anchors + `shrink` + `reset` + `split(axis, k)`
|
|
35
|
+
- `engine.animations`: `set_exit_animation` + `register_exit` + `clear_scene(exclude=...)`
|
|
36
|
+
- `engine.scaling`: `scale_to_fit(len_x, len_y, buff)`
|
|
37
|
+
- `mobjects.graph` / `mobjects.array`: `Node`, `Edge`, `ArrayMob`, `ArrayPointer`
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
slug = "showcase"
|
|
2
|
+
title = "Simplex showcase"
|
|
3
|
+
summary = "Demonstrates every helper Simplex adds on top of vanilla Manim."
|
|
4
|
+
tags = ["reference", "showcase"]
|
|
5
|
+
theme = "simplex_dark"
|
|
6
|
+
quality = "medium_quality"
|
|
7
|
+
category = "Reference"
|
|
8
|
+
order = 0
|
|
9
|
+
entrypoints = [
|
|
10
|
+
"slides.scenes:TextHelpers",
|
|
11
|
+
"slides.scenes:CodeHelpers",
|
|
12
|
+
"slides.scenes:CodeWithMath",
|
|
13
|
+
"slides.scenes:GraphAndArray",
|
|
14
|
+
"slides.scenes:RegionAnchors",
|
|
15
|
+
"slides.scenes:OutlineHelpers",
|
|
16
|
+
"slides.scenes:ExitAnimations",
|
|
17
|
+
"slides.scenes:GeometryHelpers",
|
|
18
|
+
"slides.scenes:GlyphMapTransform",
|
|
19
|
+
"slides.scenes:TrackingHelpers",
|
|
20
|
+
"slides.scenes:ShapeAndDebug",
|
|
21
|
+
"slides.scenes:ScalingHelpers",
|
|
22
|
+
"slides.paper_showcase:PaperShowcase",
|
|
23
|
+
]
|
|
24
|
+
voiceover = false
|
|
25
|
+
|
|
26
|
+
# Slide chrome lives in the RevealJS host, not the rendered frames.
|
|
27
|
+
# Toggling these on costs nothing -- no re-render needed.
|
|
28
|
+
[web]
|
|
29
|
+
show_slide_number = true
|
|
30
|
+
show_clock = true
|