Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bring in main's FileWriter into experimental #3821

Merged
merged 256 commits into from
Jul 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
256 commits
Select commit Hold shift + click to select a range
7ad7e99
pyproject.toml: update manimpango version (#3405)
naveen521kk Oct 22, 2023
8320cdd
Added docs for functions in `mobject_update_utils` (#3325)
JasonGrace2282 Oct 23, 2023
b048695
Fix tests to run on Cairo 1.18.0 (#3416)
naveen521kk Oct 25, 2023
76b4061
Fix: Fixed a bug in regards to empty inputs in AddTextLetterByLetter …
Immanuel-Alvaro-Bhirawa Oct 26, 2023
5193e1c
Introduce new workflow creating a downloadable version of the documen…
behackl Oct 26, 2023
b7eefca
Fix incorrect submobject count of multi-part Tex/MathTex mobjects by …
behackl Oct 27, 2023
b7a8a2d
CI: fix caching of cairo (#3419)
naveen521kk Oct 27, 2023
5d73525
Fix CSV reader adding empty lists in rendering summary (#3430)
JasonGrace2282 Nov 2, 2023
190ae5d
Fix None check order in _tree_layout (#3421)
Nikhil-42 Nov 2, 2023
1b88099
Bump teatimeguest/setup-texlive-action from 2 to 3 (#3431)
dependabot[bot] Nov 2, 2023
25bb381
bump dependencies -- see #3241 (#3433)
haraldschilly Nov 3, 2023
d77a47a
Fix Typing (#3086)
MrDiver Nov 3, 2023
652f1b3
fix: issue with ImageMobject bounding box (#3340)
vaclavblazej Nov 4, 2023
8fe1665
chore(deps): add Python 3.12 support (#3395)
jeertmans Nov 4, 2023
3962a12
Added ability to remove non-svg LaTeX files (#3322)
JasonGrace2282 Nov 4, 2023
20028ce
feat: DecimalNumber() - added spacing between values and unit (#3366)
uwezi Nov 4, 2023
adfef5e
Add option to run examples directly with binder (#3427)
naveen521kk Nov 10, 2023
e66c580
Prepare v0.18.0 (#3439)
behackl Nov 11, 2023
4315549
Fixed wrong path in action building downloadable docs (#3450)
behackl Nov 12, 2023
94711f7
Allow accessing ghost vectors in :class:`.LinearTransformationScene` …
JasonGrace2282 Nov 19, 2023
212bca0
Add type hints to `_config` (#3440)
Viicos Nov 20, 2023
28bf4dd
Fix Idicate docs typo (#3461)
Lawqup Nov 20, 2023
7cead84
Update indication.py (#3477)
jcep Nov 30, 2023
6949c66
Optimized `get_unit_normal()` and replaced `np.cross()` with custom `…
chopan050 Dec 6, 2023
61a2d05
Update dependency constraints, fix deprecation warnings (#3376)
Viicos Dec 6, 2023
7590086
fix 360° to 180° in quickstart tutorial (#3498)
Dec 6, 2023
40766cb
Update Docker base image to python3.12-slim (#3458) (#3459)
melodysium Dec 6, 2023
27d5360
fix line_join to joint_type in example_scenes/basic.py (#3510)
Dec 9, 2023
0cba710
fix typo in docstring for DtUpdater example: line -> square (#3509)
yuan-xy Dec 9, 2023
370d883
Implement caching of fonts list to improve runtime performance (#3316)
MrDiver Dec 10, 2023
3f118e4
Removed deprecated new command (#3512)
chopan050 Dec 10, 2023
03f9d4b
Added `cap_style` feature to `VMobject` (#3516)
MathItYT Dec 10, 2023
018e4a3
feat(cli): optionally hide version splash (#3329)
jeertmans Dec 10, 2023
64a0e9d
Reformatting the `--save_sections` output to have the format `<Scene>…
doaamuham Dec 10, 2023
9a35756
Explain ``.Transform`` vs ``.ReplacementTransform`` in quickstart exa…
JasonGrace2282 Dec 10, 2023
18a7294
Fix formatting building blocks (#3515)
MrDiver Dec 12, 2023
912ae76
Bump jupyter-server from 2.9.1 to 2.11.2 (#3497)
dependabot[bot] Dec 12, 2023
0a24cad
Account for dtype in the pixel array so the maximum value stays corre…
jeertmans Dec 12, 2023
9938bf5
Added `grid_lines` attribute to `Rectangle` to add individual styling…
RobinPH Dec 12, 2023
d390978
Fix rectangle grid properties (#3082) (#3513)
pauluhlenbruck Dec 12, 2023
1704374
Fix animations with zero runtime length to give a useful error instea…
MrDiver Dec 12, 2023
98a7f42
fixed the stroke width issue with single color in streamlines (#3436)
yashm277 Dec 12, 2023
fc42710
Add Documentation to `.to_edge` and `to_corner` (#3408)
TheMathematicFanatic Dec 13, 2023
b69e1d7
Adding the ability to pass lists and generators to .play() (#3365)
MrDiver Dec 13, 2023
cac608b
follow-up to #3491, made errors more consistent. fixes #3527
behackl Dec 17, 2023
196fa1f
chore(docs): add some words about Cairo 1.18 (#3530)
jeertmans Dec 17, 2023
8ea8f25
Fix formatting of ``MoveAlongPath`` docs (#3541)
JasonGrace2282 Dec 21, 2023
dd327a3
Fixed Animate Type-hint (#3543)
JasonGrace2282 Dec 21, 2023
3037f0e
Remove wag method from Mobject (#3539)
JasonGrace2282 Dec 22, 2023
34e7d68
Fix typo of `get_y_axis_label` docstring (#3547)
yuan-xy Dec 23, 2023
9b18a86
Finish TODO's in ``contributing/typings.rst`` (#3545)
JasonGrace2282 Dec 24, 2023
472eaae
Fix use of `Mobject`'s deprecated `get_*()` and `set_*()` methods in …
JasonGrace2282 Dec 26, 2023
4a963c4
add note in docstring of ManimColor about class constructors (#3554)
JasonGrace2282 Dec 28, 2023
02391d7
Added support for Manim type aliases in Sphinx docs + Added new TypeA…
chopan050 Dec 29, 2023
286f366
Improve documentation section about contributing to docs (#3555)
chopan050 Dec 29, 2023
3b496ea
Add helpful hints to `VGroup.add()` error message (#3561)
vvolhejn Jan 2, 2024
4e3cfd2
exception add if new_rings is none (#3574)
hydromelvictor Jan 11, 2024
9a84ec6
Fix typing of `Animation` (#3568)
dandavison Jan 13, 2024
a57fb69
Add 'to be used in the future' TODOs to ManimFrame (#3553)
chopan050 Jan 15, 2024
68bd790
Refactor `TexTemplate` (#3520)
Viicos Jan 15, 2024
775482b
Bump github/codeql-action from 2 to 3 (#3567)
dependabot[bot] Jan 24, 2024
9d880c2
Bump actions/upload-artifact from 3 to 4 (#3566)
dependabot[bot] Jan 24, 2024
9289a5c
Bump actions/setup-python from 4 to 5 (#3565)
dependabot[bot] Jan 24, 2024
8264595
updated several packages (pillow, jupyterlab, notebook, jupyterlab-ls…
behackl Jan 24, 2024
7006d6b
Removed -s / --save_last_frame flag from CLI arguments (#3528)
Gixtox Jan 24, 2024
175cb89
fix write_subcaption_file error when using opengl renderer (#3546)
yuan-xy Jan 24, 2024
f8b5066
Update docker.rst to use bash from the PATH (#3582)
NotWearingPants Jan 24, 2024
d0fe0c3
fix typo in value_tracker.py (#3594)
yuan-xy Jan 25, 2024
e2cec98
fix `get_arc_center()` returning reference of point (#3599)
sparshg Feb 1, 2024
f70980a
Add ref_class (#3598)
JasonGrace2282 Feb 1, 2024
65d352d
Fix typehint (#3592)
JasonGrace2282 Feb 1, 2024
1520481
Update ci.yml (#3611)
behackl Feb 2, 2024
ed1b203
fix type hint of indication.py (#3613)
yuan-xy Feb 4, 2024
011c36a
Revert vector type aliases to NumPy ndarrays (#3595)
chopan050 Feb 12, 2024
fcd81b2
Improve handling of specified font name (#3429)
staghado Feb 13, 2024
206f874
Remove support for dynamic plugin imports (#3524)
Viicos Feb 15, 2024
c7e7ca2
Run poetry lock --no-update (#3621)
JasonGrace2282 Feb 15, 2024
77d42d2
Update jupyter.rst (#3630)
abul4fia Feb 23, 2024
9f3d486
Fix Vector3 -> Vector3D in contributing docs (#3639)
JasonGrace2282 Mar 17, 2024
f65ebf2
Bump black from 23.12.1 to 24.3.0 (#3649)
dependabot[bot] Apr 1, 2024
d1cf1c5
Bump cryptography from 42.0.0 to 42.0.4 (#3629)
dependabot[bot] Apr 1, 2024
7a794e3
Code Cleanup: removing unused imports and global variables (#3620)
JasonGrace2282 Apr 1, 2024
909ffde
Fixing the behavior of `.become` to not modify target mobject via sid…
MrDiver Apr 1, 2024
afe1d18
Added some examples for `Mobject`/`VMobject` methods (#3641)
JasonGrace2282 Apr 1, 2024
ef675b6
Fix typehint of `Vector` direction parameter (#3640)
JasonGrace2282 Apr 2, 2024
c025be6
Fix bug in :class:`.VMobjectFromSVGPath` (#3677)
abul4fia Apr 8, 2024
1aad0c7
Flake8 rule C901 is about McCabe code complexity (#3673)
cclauss Apr 9, 2024
7936c7d
Fix broken link to Poetry's installation guide in the first time cont…
biinnnggggg Apr 11, 2024
d62a04f
Fix minor grammatical errors found in the index page of the documenta…
biinnnggggg Apr 11, 2024
a6da37b
fix(LICENSE): update year (#3689)
JasonGrace2282 Apr 11, 2024
294313d
Remove deprecated parameters and animations (#3688)
JasonGrace2282 Apr 11, 2024
93cf85c
Attempted fix for windows cp1252 encoding failure (#3687)
JasonGrace2282 Apr 11, 2024
b750152
Fix typo (#3696)
biinnnggggg Apr 12, 2024
aef8184
Docs: fix out-dated CLI option in Manim's Output Settings (#3674)
HairlessVillager Apr 13, 2024
902c3f4
only do actions if try succeeded (#3694)
JasonGrace2282 Apr 14, 2024
2a4c2da
Mention pixi in installation guide (#3678)
pavelzw Apr 14, 2024
2776612
Fix successive calls of :meth:`.LinearTransformationScene.apply_matri…
SirJamesClarkMaxwell Apr 14, 2024
a45c0d4
Bump actions/cache from 3 to 4 (#3607)
dependabot[bot] Apr 14, 2024
dc0db41
Bump FedericoCarboni/setup-ffmpeg from 2 to 3 (#3608)
dependabot[bot] Apr 14, 2024
04bfa22
Bump ssciwr/setup-mesa-dist-win from 1 to 2 (#3609)
dependabot[bot] Apr 14, 2024
5139765
docs: update typing guidelines (#3704)
JasonGrace2282 Apr 17, 2024
f9dc9c7
Update documentation and typings for `ParametricFunction` (#3703)
danielzsh Apr 19, 2024
679b89a
fix(copyright): automate copyright updating for docs (#3708)
JasonGrace2282 Apr 19, 2024
f8e3408
Fix some typehints in mobject.py (#3668)
JasonGrace2282 Apr 20, 2024
83957b9
Bump idna from 3.6 to 3.7 (#3693)
dependabot[bot] Apr 21, 2024
dff83be
Bump pillow from 10.2.0 to 10.3.0 (#3672)
dependabot[bot] Apr 21, 2024
563810a
Fix typo (#3721)
TheCrowned Apr 24, 2024
0fd16b8
Fixed `Mobject.put_start_and_end_on` with same start and end point (#…
MontroyJosh Apr 24, 2024
1aee37b
[pre-commit.ci] pre-commit autoupdate (#3332)
pre-commit-ci[bot] Apr 24, 2024
a4e5233
fix(autoaliasattr): search for type aliases under if TYPE_CHECKING (#…
JasonGrace2282 Apr 24, 2024
c32f0fd
build(deps): read-the-docs sphinx (#3720)
JasonGrace2282 Apr 24, 2024
aa3e2cf
Fix issue where SpiralIn doesn't show elements. (#3589)
Gixtox Apr 24, 2024
a3adcaa
Clean Graph layouts and increase flexibility (#3434)
Nikhil-42 Apr 24, 2024
0f268e6
Follow-up to graph layout cleanup: improvements for tests and typing …
behackl Apr 24, 2024
791a892
Update coordinate_systems.py (#3730)
amrear Apr 26, 2024
a3d584b
build(ci): change from macos-latest to macos-13 (#3729)
JasonGrace2282 Apr 26, 2024
98641a2
Add ``--preview_command`` cli flag (#3615)
JasonGrace2282 Apr 27, 2024
1ce3edd
AnimationGroup: optimized interpolate() and fixed alpha bug on finish…
chopan050 Apr 27, 2024
c4e7502
Fixed ```get_anchors()``` Return Type Inconsistency (#3214)
JinchuLi2002 Apr 27, 2024
6cb89a0
fixed [""] being set as loaded plugins (#3734)
behackl Apr 27, 2024
33e5604
Prepare new release: v0.18.1 (#3719)
behackl Apr 28, 2024
4a0c705
feat: Add three animations that together simulate a typing animation …
VinhPhmCng Apr 28, 2024
a56c0c9
Fix release documentation building (#3737)
JasonGrace2282 Apr 28, 2024
31f1895
[pre-commit.ci] pre-commit autoupdate (#3739)
pre-commit-ci[bot] Apr 29, 2024
93c601f
Fixes #3744 (#3745)
anagorko May 3, 2024
e4ee9a0
Bump tqdm from 4.66.1 to 4.66.3 (#3746)
dependabot[bot] May 4, 2024
94cd27c
Bump jinja2 from 3.1.3 to 3.1.4 (#3750)
dependabot[bot] May 6, 2024
4bd2f86
Add typehints to `manim.utils.iterables` (#3751)
JasonGrace2282 May 12, 2024
1f249e4
Let `SceneFileWriter` access `ffmpeg` via `av` instead of via externa…
behackl May 15, 2024
203a536
Use --py39-plus in pre-commit (#3761)
JasonGrace2282 May 15, 2024
b415604
Optimized `manim.utils.bezier.is_closed()` (#3768)
chopan050 May 20, 2024
7b841c2
Created and optimized Bézier splitting functions such as `partial_bez…
chopan050 May 21, 2024
7399585
Bump requests to 2.32.0 (#3776)
dependabot[bot] May 21, 2024
0d67dcd
Fix assertions and improve error messages when adding submobjects (#3…
chopan050 May 21, 2024
21eb0b7
Add pyproject for ruff formatting (#3777)
JasonGrace2282 May 22, 2024
24025b6
pre-commit change to ruff (#3779)
JasonGrace2282 May 22, 2024
c9776be
Ignore Ruff format in git blame (#3781)
Viicos May 22, 2024
0a2fbbe
Fixed `there_and_back_with_pause()` rate function behaviour with diff…
jkjkil4 May 22, 2024
938b8fc
Optimize VMobject methods which append to points (#3765)
chopan050 May 23, 2024
90ae6ad
Add `@` shorthand for `CoordinateSystem` methods `coords_to_point` (`…
JasonGrace2282 May 27, 2024
31df6d0
[pre-commit.ci] pre-commit autoupdate (#3784)
pre-commit-ci[bot] May 27, 2024
aec3d86
[pre-commit.ci] pre-commit autoupdate (#3794)
pre-commit-ci[bot] Jun 4, 2024
252aac3
Add Ruff Lint (#3780)
JasonGrace2282 Jun 4, 2024
e74f37e
Replace Pyupgrade with Ruff rule (#3795)
JasonGrace2282 Jun 5, 2024
e30ed6e
Bump tornado from 6.4 to 6.4.1 (#3796)
dependabot[bot] Jun 10, 2024
c2fa4f9
Update opengl_vectorized_mobject.py (#3790)
yang-tsao Jun 10, 2024
ece1235
[pre-commit.ci] pre-commit autoupdate (#3801)
pre-commit-ci[bot] Jun 10, 2024
4641c0a
Add typings to `OpenGLMobject` (#3803)
chopan050 Jun 13, 2024
3ed86a8
fix: importing manim should not trigger pygments.styles.get_all_style…
goldenphoenix713 Jun 17, 2024
7802e73
[pre-commit.ci] pre-commit autoupdate (#3809)
pre-commit-ci[bot] Jun 17, 2024
56354af
Bump urllib3 from 2.2.1 to 2.2.2 (#3810)
dependabot[bot] Jun 18, 2024
82ff488
Update macos packages (#3812)
JasonGrace2282 Jun 19, 2024
89d5ed4
Fixed infinite loop in OpenGL `BackgroundRectangle.get_color()` (#3732)
camburd2 Jun 21, 2024
ec1a661
Merge branch 'main' of https://github.com/ManimCommunity/manim into m…
JasonGrace2282 Jun 21, 2024
fdb4e37
docs(contributing): add manim.typing guide (#3669)
JasonGrace2282 Jun 22, 2024
1ea7f77
Implement partial movie files
JasonGrace2282 Jun 22, 2024
cf87872
Sort of combining working
JasonGrace2282 Jun 22, 2024
d5cdd79
Fix `DiGraph` edges not fading correctly on `FadeIn` and `FadeOut` (#…
Nikhil-42 Jun 22, 2024
c8f904d
fix segfault
JasonGrace2282 Jun 22, 2024
bebf972
Fix upside down video
JasonGrace2282 Jun 23, 2024
3758cf0
fix some bugs with wait()
JasonGrace2282 Jun 23, 2024
a718a4e
Fix CLI flags
JasonGrace2282 Jun 23, 2024
d2738d0
Fix FileWriter not rendering for the correct amount of time in video
JasonGrace2282 Jun 23, 2024
46aee9d
Progress on removing cairo
JasonGrace2282 Jun 23, 2024
c628d5d
Avoid printing caching message if write-to-movie is false
JasonGrace2282 Jun 23, 2024
c144fe8
Fix Manim directive
JasonGrace2282 Jun 23, 2024
714701c
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 23, 2024
a70aeee
[pre-commit.ci] pre-commit autoupdate (#3823)
pre-commit-ci[bot] Jun 24, 2024
a625efe
Implement progressbar
JasonGrace2282 Jun 25, 2024
fb022f0
Merge branch 'experimental' of https://github.com/ManimCommunity/mani…
JasonGrace2282 Jun 25, 2024
920e646
hji
JasonGrace2282 Jun 25, 2024
93a20cd
feat(autoaliasattr): Implement documentation of TypeVar's (#3818)
JasonGrace2282 Jun 26, 2024
0d21a7e
Fixed `Arrow3D.put_start_and_end_on()` to use the actual end of the a…
SirJamesClarkMaxwell Jun 26, 2024
64ab9ad
Optimized `manim.utils.bezier.get_smooth_cubic_bezier_handle_points()…
chopan050 Jun 26, 2024
0ad0643
Implement no progressbar if write_to_movie=False
JasonGrace2282 Jun 27, 2024
8d70b0e
Fix docker profile (#3827)
JasonGrace2282 Jun 27, 2024
d117c9f
Doc: add docstrings to Brace (#3715)
biinnnggggg Jun 30, 2024
9b5e63c
Some docs
JasonGrace2282 Jun 30, 2024
fd50750
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 30, 2024
1260346
[pre-commit.ci] pre-commit autoupdate (#3834)
pre-commit-ci[bot] Jul 1, 2024
73200d6
Bump docker/build-push-action from 5 to 6 (#3835)
dependabot[bot] Jul 1, 2024
fcb555c
bugfixes + speed + linting
JasonGrace2282 Jul 2, 2024
c93f73d
Deprecate opengl fixture
JasonGrace2282 Jul 2, 2024
f01d98b
Implement basic plugins
JasonGrace2282 Jul 2, 2024
1caffab
Add docstring with doctest
JasonGrace2282 Jul 2, 2024
d9f4777
Add pydantic to deps
JasonGrace2282 Jul 2, 2024
97a98c8
remove all pycairo references
JasonGrace2282 Jul 2, 2024
a517104
Cleanup other stuff
JasonGrace2282 Jul 2, 2024
860b1bc
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 3, 2024
8614b98
[pre-commit.ci] pre-commit autoupdate (#3844)
pre-commit-ci[bot] Jul 8, 2024
bb98eca
Bump certifi from 2024.2.2 to 2024.7.4 (#3841)
dependabot[bot] Jul 8, 2024
7aae433
more plugin stuff
JasonGrace2282 Jul 9, 2024
dacd03e
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 9, 2024
ee760cc
kinda working Rotate?
JasonGrace2282 Jul 10, 2024
25b21d5
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 10, 2024
747671f
Working Rotation?
JasonGrace2282 Jul 10, 2024
432c1ae
Better test scene
JasonGrace2282 Jul 10, 2024
18e2842
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 10, 2024
6fa3a10
change interpolate_mobject -> interpolate
JasonGrace2282 Jul 10, 2024
15d5690
README.md
JasonGrace2282 Jul 10, 2024
e87d3c0
Merge branch 'main' of https://github.com/ManimCommunity/manim into f…
JasonGrace2282 Jul 10, 2024
610a0af
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 10, 2024
464ce01
undo i18n changes
JasonGrace2282 Jul 10, 2024
383cdd4
Remove deprecated quadratic Bézier functions
chopan050 Jul 10, 2024
b58653c
Add docstring back to Rotate
JasonGrace2282 Jul 10, 2024
dbdf96d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 10, 2024
e19e6bc
Add missing type annotations
chopan050 Jul 10, 2024
a2ad95f
Merge branch 'file-writer' of https://github.com/JasonGrace2282/manim…
chopan050 Jul 10, 2024
bd34dbd
Add manim prefix to imports in rotation.py
chopan050 Jul 10, 2024
939324d
Fix imports of AnimationProtocol and OpenGLMobject in __init__.py
chopan050 Jul 10, 2024
a2ead05
Modify Scene.replace() docstring
chopan050 Jul 10, 2024
b1a3e3e
Remove Point(PMobject) and only use Point(Mobject)
chopan050 Jul 10, 2024
d4ce20e
Remove Point from point_cloud_mobject.__all__
chopan050 Jul 10, 2024
7f5c36e
Fix Ruff errors and comment out submob.refresh_triangulation() in Ope…
chopan050 Jul 11, 2024
255097d
Update OpenGLVMobject.insert_n_curves_to_point_list()
chopan050 Jul 11, 2024
246e44b
Fix incorrect version number in plugin section in docs (#3849)
JasonGrace2282 Jul 11, 2024
bf2feee
Bump zipp from 3.18.2 to 3.19.1 (#3847)
dependabot[bot] Jul 11, 2024
3363107
Fix commands.py to use Manager(SceneClass) instead of SceneClass()
chopan050 Jul 11, 2024
4b09ae5
Reimplement buffers, add typehints, and start caching
JasonGrace2282 Jul 12, 2024
e0dfa3d
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jul 12, 2024
1b416b1
Fix ci
JasonGrace2282 Jul 12, 2024
1752529
Rename assemble_family -> note_changed_family to match 3b1b
JasonGrace2282 Jul 12, 2024
91f966f
patch typehints due to lack of Proxy[T] in python typing
JasonGrace2282 Jul 12, 2024
99c99e8
Rename Image aliases to PixelArray, refactor imports to avoid circula…
chopan050 Jul 12, 2024
67f95db
Rename typing.Image type aliases to PixelArray to avoid conflict with…
chopan050 Jul 12, 2024
ca7a197
Merge branch 'main' of https://github.com/ManimCommunity/manim into f…
JasonGrace2282 Jul 12, 2024
549a626
Revert some import refactor to pass tests
chopan050 Jul 12, 2024
62f42af
Use get_bezier_tuples_from_points(points) in OpenGLVMobject.insert_n_…
chopan050 Jul 12, 2024
a055c20
Progress on rewriting frame stuff
JasonGrace2282 Jul 12, 2024
7562596
Change from tempconfig to a config fixture in tests (#3853)
JasonGrace2282 Jul 12, 2024
ef67a51
Merge branch 'main' of https://github.com/ManimCommunity/manim into f…
JasonGrace2282 Jul 12, 2024
07f640c
fix merge conflicts
JasonGrace2282 Jul 13, 2024
628a545
Fix :attr:`.ManimConfig.format` not updating movie file extension (#3…
JasonGrace2282 Jul 13, 2024
1df1709
Rewrite `manim.utils.bezier.get_quadratic_approximation_of_cubic()` t…
chopan050 Jul 13, 2024
da18432
Progress towards a working png file-writer
JasonGrace2282 Jul 13, 2024
3a71411
Log execution time of scene rendering in the Manim Checkhealth comman…
chopan050 Jul 13, 2024
374eeeb
Optimize `VMobject.pointwise_become_partial()` (#3760)
chopan050 Jul 13, 2024
b064af9
Update macos.rst (#3857)
Elastino Jul 14, 2024
618fe3f
VGroup -> OpenGLVGroup + typehint changes
JasonGrace2282 Jul 14, 2024
23d6dbf
Remove file that appeared somehow
JasonGrace2282 Jul 14, 2024
f2a0c76
Merge branch 'main' of https://github.com/ManimCommunity/manim into f…
JasonGrace2282 Jul 14, 2024
8b684e9
Delete opengl tests
JasonGrace2282 Jul 14, 2024
de8e44f
Make manager generic in its scene for autocomplete
JasonGrace2282 Jul 14, 2024
47a94b0
Undo deletion of manim/mobject/opengl
JasonGrace2282 Jul 14, 2024
6dff48d
progress on tests
JasonGrace2282 Jul 14, 2024
b1811fe
Convert scene.render() -> manager.render()
JasonGrace2282 Jul 14, 2024
475dab2
fix opengl context not found in tests
JasonGrace2282 Jul 14, 2024
306492f
use keyword argument when creating scene
JasonGrace2282 Jul 14, 2024
90f6de0
Change Scene() -> Manager(Scene)
JasonGrace2282 Jul 14, 2024
25188bf
Change to use OpenGL* for some classes
JasonGrace2282 Jul 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/publish-docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
platforms: linux/arm64,linux/amd64
push: true
Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:
print(f"tag_name={ref_tag}", file=f)

- name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
platforms: linux/arm64,linux/amd64
push: true
Expand Down
4 changes: 2 additions & 2 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ repos:
- id: python-check-blanket-noqa
name: Precision flake ignores
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.4.9
rev: v0.5.1
hooks:
- id: ruff
name: ruff lint
Expand All @@ -41,7 +41,7 @@ repos:
flake8-simplify==0.14.1,
]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.10.0
rev: v1.10.1
hooks:
- id: mypy
additional_dependencies:
Expand Down
12 changes: 8 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@

Manim is an animation engine for explanatory math videos. It's used to create precise animations programmatically, as demonstrated in the videos of [3Blue1Brown](https://www.3blue1brown.com/).

> NOTE: This repository is maintained by the Manim Community and is not associated with Grant Sanderson or 3Blue1Brown in any way (although we are definitely indebted to him for providing his work to the world). If you would like to study how Grant makes his videos, head over to his repository ([3b1b/manim](https://github.com/3b1b/manim)). This fork is updated more frequently than his, and it's recommended to use this fork if you'd like to use Manim for your own projects.
> [!NOTE]
> This repository is maintained by the Manim Community and is not associated with Grant Sanderson or 3Blue1Brown in any way (although we are definitely indebted to him for providing his work to the world). If you would like to study how Grant makes his videos, head over to his repository ([3b1b/manim](https://github.com/3b1b/manim)). This fork is updated more frequently than his, and it's recommended to use this fork if you'd like to use Manim for your own projects.

## Table of Contents:

Expand All @@ -35,7 +36,8 @@ Manim is an animation engine for explanatory math videos. It's used to create pr

## Installation

> **WARNING:** These instructions are for the community version _only_. Trying to use these instructions to install [3b1b/manim](https://github.com/3b1b/manim) or instructions there to install this version will cause problems. Read [this](https://docs.manim.community/en/stable/faq/installation.html#why-are-there-different-versions-of-manim) and decide which version you wish to install, then only follow the instructions for your desired version.
> [!WARNING]
> These instructions are for the community version _only_. Trying to use these instructions to install [3b1b/manim](https://github.com/3b1b/manim) or instructions there to install this version will cause problems. Read [this](https://docs.manim.community/en/stable/faq/installation.html#why-are-there-different-versions-of-manim) and decide which version you wish to install, then only follow the instructions for your desired version.

Manim requires a few dependencies that must be installed prior to using it. If you
want to try it out first before installing it locally, you can do so
Expand Down Expand Up @@ -71,7 +73,7 @@ In order to view the output of this scene, save the code in a file called `examp
manim -p -ql example.py SquareToCircle
```

You should see your native video player program pop up and play a simple scene in which a square is transformed into a circle. You may find some more simple examples within this
You should see a window pop up and play a simple scene in which a square is transformed into a circle. You may find some more simple examples within this
[GitHub repository](example_scenes). You can also visit the [official gallery](https://docs.manim.community/en/stable/examples.html) for more advanced examples.

Manim also ships with a `%%manim` IPython magic which allows to use it conveniently in JupyterLab (as well as classic Jupyter) notebooks. See the
Expand All @@ -84,13 +86,15 @@ The general usage of Manim is as follows:

![manim-illustration](https://raw.githubusercontent.com/ManimCommunity/manim/main/docs/source/_static/command.png)

The `-p` flag in the command above is for previewing, meaning the video file will automatically open when it is done rendering. The `-ql` flag is for a faster rendering at a lower quality.
The `-p` flag in the command above is for previewing, meaning a window will show up to render it in real time.
The `-ql` flag is for a faster rendering at a lower quality.

Some other useful flags include:

- `-s` to skip to the end and just show the final frame.
- `-n <number>` to skip ahead to the `n`'th animation of a scene.
- `-f` show the file in the file browser.
- `-w` to actually write the result into a video file.

For a thorough list of command line arguments, visit the [documentation](https://docs.manim.community/en/stable/guides/configuration.html).

Expand Down
2 changes: 0 additions & 2 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

from __future__ import annotations

import cairo
import moderngl

# If it is running Doctest the current directory
Expand Down Expand Up @@ -34,7 +33,6 @@ def pytest_report_header(config):
info = ctx.info
ctx.release()
return (
f"\nCairo Version: {cairo.cairo_version()}",
"\nOpenGL information",
"------------------",
f"vendor: {info['GL_VENDOR'].strip()}",
Expand Down
4 changes: 2 additions & 2 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ RUN wget -O /tmp/install-tl-unx.tar.gz http://mirror.ctan.org/systems/texlive/tl
tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/install-tl --strip-components=1 && \
/tmp/install-tl/install-tl --profile=/tmp/texlive-profile.txt \
&& tlmgr install \
amsmath babel-english cbfonts-fd cm-super ctex doublestroke dvisvgm everysel \
amsmath babel-english cbfonts-fd cm-super count1to ctex doublestroke dvisvgm everysel \
fontspec frcursive fundus-calligra gnu-freefont jknapltx latex-bin \
mathastext microtype ms physics preview ragged2e relsize rsfs \
mathastext microtype multitoc physics prelim2e preview ragged2e relsize rsfs \
setspace standalone tipa wasy wasysym xcolor xetex xkeyval

# clone and build manim
Expand Down
12 changes: 6 additions & 6 deletions docs/i18n/sv/LC_MESSAGES/tutorials/building_blocks.po
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ msgid "Creating a custom animation"
msgstr "Skapa en egen animation"

#: ../../source/tutorials/building_blocks.rst:299
msgid "Even though Manim has many built-in animations, you will find times when you need to smoothly animate from one state of a :class:`~.Mobject` to another. If you find yourself in that situation, then you can define your own custom animation. You start by extending the :class:`~.Animation` class and overriding its :meth:`~.Animation.interpolate_mobject`. The :meth:`~.Animation.interpolate_mobject` method receives alpha as a parameter that starts at 0 and changes throughout the animation. So, you just have to manipulate self.mobject inside Animation according to the alpha value in its interpolate_mobject method. Then you get all the benefits of :class:`~.Animation` such as playing it for different run times or using different rate functions."
msgstr "Även om Manim har många inbyggda animationer, kommer det vara stunder när du behöver animera smidigt från ett tillstånd av ett :class:`~.Mobject` till ett annat. Om du befinner dig i den situationen kan du definiera en egen animation. Du börjar med att utöka :class:`~.Animation`-klassen och åsidosätter dess :meth:`~.Animation.interpolate_mobject`. :meth:`~.Animation.interpolate_mobject` -metoden får alfa som en parameter som startar vid 0 och ändras under hela animationen. Så du behöver bara manipulera self.mobject inuti Animation enligt alfa värdet i dess interpolate_mobject-metod. Då får du alla fördelar med :class:`~.Animation` såsom att spela det under olika körtider eller använda olika hastighetsfunktioner."
msgid "Even though Manim has many built-in animations, you will find times when you need to smoothly animate from one state of a :class:`~.Mobject` to another. If you find yourself in that situation, then you can define your own custom animation. You start by extending the :class:`~.Animation` class and overriding its :meth:`~.Animation.interpolate`. The :meth:`~.Animation.interpolate` method receives alpha as a parameter that starts at 0 and changes throughout the animation. So, you just have to manipulate self.mobject inside Animation according to the alpha value in its interpolate method. Then you get all the benefits of :class:`~.Animation` such as playing it for different run times or using different rate functions."
msgstr "Även om Manim har många inbyggda animationer, kommer det vara stunder när du behöver animera smidigt från ett tillstånd av ett :class:`~.Mobject` till ett annat. Om du befinner dig i den situationen kan du definiera en egen animation. Du börjar med att utöka :class:`~.Animation`-klassen och åsidosätter dess :meth:`~.Animation.interpolate`. :meth:`~.Animation.interpolate` -metoden får alfa som en parameter som startar vid 0 och ändras under hela animationen. Så du behöver bara manipulera self.mobject inuti Animation enligt alfa värdet i dess interpolate-metod. Då får du alla fördelar med :class:`~.Animation` såsom att spela det under olika körtider eller använda olika hastighetsfunktioner."

#: ../../source/tutorials/building_blocks.rst:306
msgid "Let's say you start with a number and want to create a :class:`~.Transform` animation that transforms it to a target number. You can do it using :class:`~.FadeTransform`, which will fade out the starting number and fade in the target number. But when we think about transforming a number from one to another, an intuitive way of doing it is by incrementing or decrementing it smoothly. Manim has a feature that allows you to customize this behavior by defining your own custom animation."
Expand All @@ -175,12 +175,12 @@ msgid "You can start by creating your own ``Count`` class that extends :class:`~
msgstr "Du kan börja med att skapa din egen ``Count`` klass som utökar klassen :class:`~.Animation`. Klassen kan ha en konstruktor med tre argument, ett :class:`~.DecimalNumber` Mobject, start and end. Konstruktorn kommer att skicka :class:`~.DecimalNumber` Mobject till superkonstruktorn (i detta fall konstruktorn i :class:`~.Animation`) och kommer att ställa in start och slut."

#: ../../source/tutorials/building_blocks.rst:315
msgid "The only thing that you need to do is to define how you want it to look at every step of the animation. Manim provides you with the alpha value in the :meth:`~.Animation.interpolate_mobject` method based on frame rate of video, rate function, and run time of animation played. The alpha parameter holds a value between 0 and 1 representing the step of the currently playing animation. For example, 0 means the beginning of the animation, 0.5 means halfway through the animation, and 1 means the end of the animation."
msgstr "Det enda du behöver göra är att definiera hur du vill att det ska se ut för varje steg i animationen. Manim ger dig alfavärdet i :meth:`~. nimation.interpolate_mobject' metoden baserat på bildhastigheten av videon, hastighetsfunktionen och körtiden för den animation som spelas. Alfaparametern har ett värde mellan 0 och 1 som representerar steget i den aktuella animationen. Till exempel betyder 0 början av animationen, 0,5 betyder halvvägs genom animationen och 1 betyder slutet av animationen."
msgid "The only thing that you need to do is to define how you want it to look at every step of the animation. Manim provides you with the alpha value in the :meth:`~.Animation.interpolate` method based on frame rate of video, rate function, and run time of animation played. The alpha parameter holds a value between 0 and 1 representing the step of the currently playing animation. For example, 0 means the beginning of the animation, 0.5 means halfway through the animation, and 1 means the end of the animation."
msgstr "Det enda du behöver göra är att definiera hur du vill att det ska se ut för varje steg i animationen. Manim ger dig alfavärdet i :meth:`~. nimation.interpolate' metoden baserat på bildhastigheten av videon, hastighetsfunktionen och körtiden för den animation som spelas. Alfaparametern har ett värde mellan 0 och 1 som representerar steget i den aktuella animationen. Till exempel betyder 0 början av animationen, 0,5 betyder halvvägs genom animationen och 1 betyder slutet av animationen."

#: ../../source/tutorials/building_blocks.rst:320
msgid "In the case of the ``Count`` animation, you just have to figure out a way to determine the number to display at the given alpha value and then set that value in the :meth:`~.Animation.interpolate_mobject` method of the ``Count`` animation. Suppose you are starting at 50 and incrementing until the :class:`~.DecimalNumber` reaches 100 at the end of the animation."
msgstr "I fallet med ``Count`` animationen, behöver du bara hitta ett sätt att bestämma talet som ska visas för det givna alfavärdet och sedan ange det värdet i :meth:`~.Animation.interpolate_mobject` -metoden för ``Count``-animationen. Antag att du börjar med 50 och inkrementerar värdet tills :class:`~.DecimalNumber` når 100 i slutet av animationen."
msgid "In the case of the ``Count`` animation, you just have to figure out a way to determine the number to display at the given alpha value and then set that value in the :meth:`~.Animation.interpolate` method of the ``Count`` animation. Suppose you are starting at 50 and incrementing until the :class:`~.DecimalNumber` reaches 100 at the end of the animation."
msgstr "I fallet med ``Count`` animationen, behöver du bara hitta ett sätt att bestämma talet som ska visas för det givna alfavärdet och sedan ange det värdet i :meth:`~.Animation.interpolate` -metoden för ``Count``-animationen. Antag att du börjar med 50 och inkrementerar värdet tills :class:`~.DecimalNumber` når 100 i slutet av animationen."

#: ../../source/tutorials/building_blocks.rst:323
msgid "If alpha is 0, you want the value to be 50."
Expand Down
1 change: 1 addition & 0 deletions docs/source/contributing/docs.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,3 +81,4 @@ Index
docs/examples
docs/references
docs/typings
docs/types
134 changes: 134 additions & 0 deletions docs/source/contributing/docs/types.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
===================
Choosing Type Hints
===================
In order to provide the best user experience,
it's important that type hints are chosen correctly.
With the large variety of types provided by Manim, choosing
which one to use can be difficult. This guide aims to
aid you in the process of choosing the right type for the scenario.


The first step is figuring out which category your type hint fits into.

Coordinates
-----------
Coordinates encompass two main categories: points, and vectors.


Points
~~~~~~
The purpose of points is pretty straightforward: they represent a point
in space. For example:

.. code-block:: python

def status2D(coord: Point2D) -> None:
x, y = coord
print(f"Point at {x=},{y=}")


def status3D(coord: Point3D) -> None:
x, y, z = coord
print(f"Point at {x=},{y=},{z=}")


def get_statuses(coords: Point2D_Array | Point3D_Array) -> None:
for coord in coords:
if len(coord) == 2:
# it's a Point2D
status2D(coord)
else:
# it's a point3D
status3D(coord)

It's important to realize that the status functions accepted both
tuples/lists of the correct length, and ``NDArray``'s of the correct shape.
If they only accepted ``NDArray``'s, we would use their ``Internal`` counterparts:
:class:`~.typing.InternalPoint2D`, :class:`~.typing.InternalPoint3D`, :class:`~.typing.InternalPoint2D_Array` and :class:`~.typing.InternalPoint3D_Array`.

In general, the type aliases prefixed with ``Internal`` should never be used on
user-facing classes and functions, but should be reserved for internal behavior.

Vectors
~~~~~~~
Vectors share many similarities to points. However, they have a different
connotation. Vectors should be used to represent direction. For example,
consider this slightly contrived function:

.. code-block:: python

def shift_mobject(mob: Mobject, direction: Vector3D, scale_factor: float = 1) -> mob:
return mob.shift(direction * scale_factor)

Here we see an important example of the difference. ``direction`` can not, and
should not, be typed as a :class:`~.typing.Point3D` because the function does not accept tuples/lists,
like ``direction=(0, 1, 0)``. You could type it as :class:`~.typing.InternalPoint3D` and
the type checker and linter would be happy; however, this makes the code harder
to understand.

As a general rule, if a parameter is called ``direction`` or ``axis``,
it should be type hinted as some form of :class:`~.VectorND`.

.. warning::

This is not always true. For example, as of Manim 0.18.0, the direction
parameter of the :class:`.Vector` Mobject should be ``Point2D | Point3D``,
as it can also accept ``tuple[float, float]`` and ``tuple[float, float, float]``.

Colors
------
The interface Manim provides for working with colors is :class:`.ManimColor`.
The main color types Manim supports are RGB, RGBA, and HSV. You will want
to add type hints to a function depending on which type it uses. If any color will work,
you will need something like:

.. code-block:: python

if TYPE_CHECKING:
from manim.utils.color import ParsableManimColor

# type hint stuff with ParsableManimColor



Béziers
-------
Manim internally represents a :class:`.Mobject` by a collection of points. In the case of :class:`.VMobject`,
the most commonly used subclass of :class:`.Mobject`, these points represent Bézier curves,
which are a way of representing a curve using a sequence of points.

.. note::

To learn more about Béziers, take a look at https://pomax.github.io/bezierinfo/


Manim supports two different renderers, which each have different representations of
Béziers: Cairo uses cubic Bézier curves, while OpenGL uses quadratic Bézier curves.

Type hints like :class:`~.typing.BezierPoints` represent a single bezier curve, and :class:`~.typing.BezierPath`
represents multiple Bézier curves. A :class:`~.typing.Spline` is when the Bézier curves in a :class:`~.typing.BezierPath`
forms a single connected curve. Manim also provides more specific type aliases when working with
quadratic or cubic curves, and they are prefixed with their respective type (e.g. :class:`~.typing.CubicBezierPoints`,
is a :class:`~.typing.BezierPoints` consisting of exactly 4 points representing a cubic Bézier curve).


Functions
---------
Throughout the codebase, many different types of functions are used. The most obvious example
is a rate function, which takes in a float and outputs a float (``Callable[[float], float]``).
Another example is for overriding animations. One will often need to map a :class:`.Mobject`
to an overridden :class:`.Animation`, and for that we have the :class:`~.typing.FunctionOverride` type hint.

:class:`~.typing.PathFuncType` and :class:`~.typing.MappingFunction` are more niche, but are related to moving objects
along a path, or applying functions. If you need to use it, you'll know.


Images
------
There are several representations of images in Manim. The most common is
the representation as a NumPy array of floats representing the pixels of an image.
This is especially common when it comes to the OpenGL renderer.

This is the use case of the :class:`~.typing.Image` type hint. Sometimes, Manim may use ``PIL.Image``,
in which case one should use that type hint instead.
Of course, if a more specific type of image is needed, it can be annotated as such.
6 changes: 3 additions & 3 deletions docs/source/contributing/docs/typings.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
==============
Adding Typings
==============
==================
Typing Conventions
==================

.. warning::
This section is still a work in progress.
Expand Down
Loading
Loading