Animora Architecture — Dependency Policy & Ecosystem Integration
1. Classification Framework
Animora classifies all external dependencies into three strict tiers:
- Hard (Runtime) Dependencies: Required for core library usage. Installed automatically with
pip install animora. - Optional Extras: Additional features (e.g. CLI formatting, enhanced export formats) enabled via bracket syntax (e.g.
pip install animora[cli],pip install animora[docs]). - Development Dependencies: Tooling required strictly for building, testing, linting, and maintaining the repository.
2. Dependency Table & Justification
| Package | Classification | Minimum Version | License | Justification |
|---|---|---|---|---|
manim |
Hard (Runtime) | >=0.18.0, <1.0.0 |
MIT | Core vector animation engine and rendering backend (Community Edition). |
numpy |
Hard (Runtime) | >=1.24.0, <3.0.0 |
BSD-3-Clause | Foundational vector, matrix, coordinate transformations, and numerical data processing. |
networkx |
Hard (Runtime) | >=3.0, <4.0 |
BSD-3-Clause | Topological graph representation, shortest-path algorithms, tree hierarchy traversal, and graph layout coordinates. |
click / typer |
Optional ([cli]) |
>=8.0 |
BSD-3-Clause / MIT | Clean, modern CLI framework powering animora new, preview, and doctor. |
rich |
Optional ([cli]) |
>=13.0 |
MIT | Terminal formatting, progress bars, and diagnostics for CLI outputs. |
pytest |
Development | >=8.0 |
MIT | Primary test runner and assertion framework for unit and integration testing. |
pytest-cov |
Development | >=4.1 |
MIT | Code coverage reporting ensuring minimum 90% coverage on core and layouts. |
ruff |
Development | >=0.3.0 |
MIT / Apache-2.0 | Ultra-fast linter and code formatter replacing flake8, isort, and black. |
mypy |
Development | >=1.9.0 |
MIT | Static type checker enforcing strict type safety across all public and internal interfaces. |
flit-core / hatchling |
Build System | Standard PEP 517 | MIT | Modern, standardized Python packaging backend without legacy setup.py. |
mkdocs-material |
Development ([docs]) |
>=9.5 |
MIT | Modern, fast documentation site generator supporting markdown, search, and syntax highlighting. |
3. Dependency Policy Rules
- Zero Unjustified Dependencies: No dependency may be added to runtime
dependenciesinpyproject.tomlunless it provides functionality that would otherwise require hundreds of lines of complex, error-prone custom mathematics or rendering logic. - License Compatibility: All runtime dependencies must use permissive licenses (MIT, BSD-2/3-Clause, Apache 2.0). Copyleft licenses (GPL, AGPL) are prohibited in hard dependencies to ensure Animora remains universally usable for commercial and educational purposes.
- No Heavy Deep Learning Frameworks: Animora is an animation and visualization engine; deep learning frameworks (PyTorch, TensorFlow) must never become hard dependencies.
- Pure Python Where Possible: Except for precompiled wheels provided by
numpyandmanim's system dependencies (cairo/ffmpeg), Animora core code remains pure Python to guarantee cross-platform compatibility across Windows, macOS, and Linux.