Full Changelog: v1.0.3...v1.0.4
View on PyPI: https://pypi.org/project/manim-extensions/1.0.4/
What's Changed
Added
- Added
ArcIntto the Basic geometry module and its documentation ingeometry.rstfor computing arc-arc intersections. - Added
reuse-lintandflake8-unused-importsjobs to the GitHub Actions workflow for license compliance and unused import detection. - Added custom Sphinx extension
inheritance_colorsthat color-codes inheritance diagram nodes by module origin — Manim nodes in green (#87C2A5), Manim Extensions nodes in teal (#4DB8D4), with dark foreground (#1E1E2E) for both, and uncolored Python nodes in gray — with a dynamic legend auto-generated above each diagram. - Added legend display above inheritance diagrams with color swatches for Manim, Manim Extensions, and Python (auto-detected when third-party nodes appear in a diagram).
Changed
- Replaced all
YELLOWcolor references withPURE_YELLOW(#FFFF00) across the entire codebase (58 occurrences, 20 files), matching the original bright yellow that Manim'sYELLOWconstant used to represent. - Simplified
ExtendedLineby removing the**kwargsparameter — the class now automatically copies the source line's style viamatch_style(); updated the docstring to document this behavior. - Removed all
.. inheritance-diagram::directives frommobjects.pydocstrings (previously present for 11 classes). - Updated documentation logo size to 208px width (matching Manim Community docs).
- Updated documentation: added per-module index pages with individual
:doc:links in the main index (matching theCompassstyle), added inheritance diagrams for all bundled modules, and removed references to the deletedthird_party/directory and Git submodules. - Updated Python version requirement to
>=3.11acrosspyproject.toml, GitHub Actions workflow, and documentation. - Added comprehensive parameter documentation (
Parameterssections) to all public classes acrossalgorithm,circuit,compass,meshes,mindmap,physics, andrubikscubemodules, documenting every__init__parameter in class-level docstrings. - Added
validate.ymlGitHub Actions workflow with three separate jobs (validate-manim-directives,validate-param-docs,validate-refs) and their corresponding Python validation scripts. - Removed module-level
.. manim::directive examples from 16 Python files (the rendering engine does not display module-level manim examples). - Converted all absolute
from manim_extensions.xxximports to relative imports across 12 files inmeshes/andalgorithm/subpackages (params.py,templates.py,helpers.py,basic_mesh.py,opengl_mesh.py,triangle_mesh.py,mesh.py,voronoi.py,divide_and_conquer.py,delaunay_criterion.py,array.py,test_numpy_helper.py) to follow PEP 8 and reduce coupling. - Added
package_dataconfiguration inpyproject.tomlto ensure mesh model data files (*.ply,*.stl) are included insdistandwheeldistributions. - Added minimum version constraints to all third-party dependencies in
pyproject.toml— most importantlyshapely>=2.0(required for the newfrom shapely import geometryAPI used in optics), plusPillow>=9.0,opencv-python>=4.5,pymunk>=6.0,kociemba>=1.2,trimesh>=4.0,scipy>=1.9, andmoderngl>=5.0.
Removed
- Deleted
Code,JavaCode,PythonCode, andCppCodeclasses from thealgorithmmodule (unused code block classes). - Removed the
index_code_labelshelper fromalgorithm/utils/debug.py(was only used by the deletedCodeclass).
Fixed
- Fixed
ManimTransitionDocExampledisplaying a full DFA instead of demonstrating a single transition. - Fixed
KeyError: 'pop'andKeyError: 'push'inManimPushDownAutomatonandManimPushDownAutomatonTransitionby adding PDA-specific default templates and defensive.get()lookups. - Fixed GitHub Actions workflow paths for
validate_param_docs.pyandvalidate_directives.py(addedworkflow/prefix). - Fixed Sphinx cross-references in
circuitandmindmapmodules (LEFT,DOWN, andLayoutDirection.LeftToRightinline code to proper cross-references). - Fixed CI test failures for missing
xmltodict, invalid escape sequences in TikZ docstrings, and CJK font detection on Linux. - Fixed
TypeErrorforstr | Noneunion syntax in Python 3.10–3.13 environments by addingfrom __future__ import annotations. - Fixed
ArcIntdivision-by-zero error for concentric circles by adding ad <= 1e-9guard. - Fixed
FastManimMeshAttributeErrorby initialisingtriangle_indicesbeforesuper().__init__(). - Fixed Example Gallery frame overflow and centering for multiple examples (
CircuitExample,GearboxExample,NeuralNetworkExample, etc.) by adjusting scales, shifts, and usingscale_to_fit_width(). - Removed gray text / titles from
CompassExampleand ensured all geometry elements are centered. - Fixed
check_redundant_imports.pyfalse positives: no longer flags explicitly-imported names (e.g.ConvertToOpenGL) whenfrom manim import *is absent and those names are not covered by star exports. - Fixed
validate_refs.pyfalse positives: separated project class map (manim_extensions) from installedmanimso that manim-internal names likeCodeno longer trigger inline-code suggestions in changelog/docs. - Fixed
flake8-unused-importsCI job by correcting the--excludeglob pattern (*__init__.py*) so that all__init__.pyfiles are properly excluded from the F401 check. - Added SPDX license header to
CONTRIBUTING.mdto restore REUSE 3.3 compliance. - Fixed
pyproject.tomlTOML parse error on Python 3.13 / pip by replacing an invalid tuple ((...)) with an array ([...]) in the[tool.flake8]section. - Added
myst-parserto thedocsoptional dependencies so ReadTheDocs can build the documentation with the includedCONTRIBUTING.md. - Fixed
FileTreebox-drawing characters not connecting on Linux / ReadTheDocs by switching the Linux fallback font fromDejaVu Sans MonotoJetBrains Mono, and installingfonts-jetbrains-monoin the ReadTheDocs build environment. - Fixed
validate_refs.pyfalse positives for filenames likeCONTRIBUTING.mdby skipping tokens ending in common file extensions (.md,.rst,.py, etc.). - Fixed inheritance diagram node colors being overwritten / flashing on page load by updating
responsiveSvg.jsto preserve custom fill colors injected by theinheritance_colorsextension. - Fixed missing module exports in
automata/__init__.pyandautomata/mobjects/__init__.py— addedManimTuringMachine,ManimState,ManimTransition,ManimPushDownAutomatonTransition,ManimAutomataInput,Token, andPushDownAutomatonRuleto__all__so they are importable viafrom manim_extensions.automata import .... - Fixed Sphinx "Title underline too short" warnings in
docs/source/reference/automata/mobjects.rstby extending underlines forManimTransition,ManimdeterministicFiniteAutomaton, andManimNondeterministicFiniteAutomatonheadings.