Showing preview only (5,771K chars total). Download the full file or copy to clipboard to get everything.
Repository: ManimCommunity/manim
Branch: main
Commit: 21cf9998cc7a
Files: 1305
Total size: 5.3 MB
Directory structure:
gitextract_kmopyg5o/
├── .codecov.yml
├── .codespell_ignorewords
├── .codespellrc
├── .dockerignore
├── .flake8
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── installation_issue.md
│ ├── PULL_REQUEST_TEMPLATE/
│ │ ├── bugfix.md
│ │ ├── documentation.md
│ │ └── hackathon.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── codeql.yml
│ ├── dependabot.yml
│ ├── manimdependency.json
│ ├── release.yml
│ ├── scripts/
│ │ └── ci_build_cairo.py
│ └── workflows/
│ ├── cffconvert.yml
│ ├── ci.yml
│ ├── codeql.yml
│ ├── dependent-issues.yml
│ ├── publish-docker.yml
│ ├── python-publish.yml
│ └── release-publish-documentation.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .pylintrc
├── .readthedocs.yml
├── CITATION.cff
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE.community
├── README.md
├── crowdin.yml
├── docker/
│ ├── Dockerfile
│ ├── readme.md
│ └── texlive-profile.txt
├── docs/
│ ├── Makefile
│ ├── html
│ ├── i18n/
│ │ ├── fr/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── index.po
│ │ │ └── installation.po
│ │ ├── gettext/
│ │ │ ├── changelog/
│ │ │ │ ├── 0.1.0-changelog.pot
│ │ │ │ ├── 0.1.1-changelog.pot
│ │ │ │ ├── 0.10.0-changelog.pot
│ │ │ │ ├── 0.11.0-changelog.pot
│ │ │ │ ├── 0.12.0-changelog.pot
│ │ │ │ ├── 0.13.0-changelog.pot
│ │ │ │ ├── 0.13.1-changelog.pot
│ │ │ │ ├── 0.14.0-changelog.pot
│ │ │ │ ├── 0.15.0-changelog.pot
│ │ │ │ ├── 0.15.1-changelog.pot
│ │ │ │ ├── 0.15.2-changelog.pot
│ │ │ │ ├── 0.16.0-changelog.pot
│ │ │ │ ├── 0.2.0-changelog.pot
│ │ │ │ ├── 0.3.0-changelog.pot
│ │ │ │ ├── 0.4.0-changelog.pot
│ │ │ │ ├── 0.5.0-changelog.pot
│ │ │ │ ├── 0.6.0-changelog.pot
│ │ │ │ ├── 0.7.0-changelog.pot
│ │ │ │ ├── 0.8.0-changelog.pot
│ │ │ │ └── 0.9.0-changelog.pot
│ │ │ ├── changelog.pot
│ │ │ ├── conduct.pot
│ │ │ ├── contributing/
│ │ │ │ ├── admonitions.pot
│ │ │ │ ├── development.pot
│ │ │ │ ├── docstrings.pot
│ │ │ │ ├── examples.pot
│ │ │ │ ├── internationalization.pot
│ │ │ │ ├── performance.pot
│ │ │ │ ├── references.pot
│ │ │ │ ├── testing.pot
│ │ │ │ └── typings.pot
│ │ │ ├── contributing.pot
│ │ │ ├── examples.pot
│ │ │ ├── faq/
│ │ │ │ ├── general.pot
│ │ │ │ ├── help.pot
│ │ │ │ ├── index.pot
│ │ │ │ ├── installation.pot
│ │ │ │ ├── internals.pot
│ │ │ │ └── opengl.pot
│ │ │ ├── guides/
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── deep_dive.pot
│ │ │ │ ├── index.pot
│ │ │ │ └── using_text.pot
│ │ │ ├── index.pot
│ │ │ ├── installation/
│ │ │ │ ├── docker.pot
│ │ │ │ ├── jupyter.pot
│ │ │ │ ├── linux.pot
│ │ │ │ ├── macos.pot
│ │ │ │ ├── troubleshooting.pot
│ │ │ │ ├── versions.pot
│ │ │ │ └── windows.pot
│ │ │ ├── installation.pot
│ │ │ ├── internals.pot
│ │ │ ├── plugins.pot
│ │ │ ├── reference/
│ │ │ │ ├── manim._config.logger_utils.JSONFormatter.pot
│ │ │ │ ├── manim._config.logger_utils.pot
│ │ │ │ ├── manim._config.pot
│ │ │ │ ├── manim._config.utils.ManimConfig.pot
│ │ │ │ ├── manim._config.utils.ManimFrame.pot
│ │ │ │ ├── manim._config.utils.pot
│ │ │ │ ├── manim.animation.animation.Animation.pot
│ │ │ │ ├── manim.animation.animation.Wait.pot
│ │ │ │ ├── manim.animation.animation.pot
│ │ │ │ ├── manim.animation.changing.AnimatedBoundary.pot
│ │ │ │ ├── manim.animation.changing.TracedPath.pot
│ │ │ │ ├── manim.animation.changing.pot
│ │ │ │ ├── manim.animation.composition.AnimationGroup.pot
│ │ │ │ ├── manim.animation.composition.LaggedStart.pot
│ │ │ │ ├── manim.animation.composition.LaggedStartMap.pot
│ │ │ │ ├── manim.animation.composition.Succession.pot
│ │ │ │ ├── manim.animation.composition.pot
│ │ │ │ ├── manim.animation.creation.AddTextLetterByLetter.pot
│ │ │ │ ├── manim.animation.creation.AddTextWordByWord.pot
│ │ │ │ ├── manim.animation.creation.Create.pot
│ │ │ │ ├── manim.animation.creation.DrawBorderThenFill.pot
│ │ │ │ ├── manim.animation.creation.ShowIncreasingSubsets.pot
│ │ │ │ ├── manim.animation.creation.ShowPartial.pot
│ │ │ │ ├── manim.animation.creation.ShowSubmobjectsOneByOne.pot
│ │ │ │ ├── manim.animation.creation.SpiralIn.pot
│ │ │ │ ├── manim.animation.creation.Uncreate.pot
│ │ │ │ ├── manim.animation.creation.Unwrite.pot
│ │ │ │ ├── manim.animation.creation.Write.pot
│ │ │ │ ├── manim.animation.creation.pot
│ │ │ │ ├── manim.animation.fading.FadeIn.pot
│ │ │ │ ├── manim.animation.fading.FadeOut.pot
│ │ │ │ ├── manim.animation.fading.pot
│ │ │ │ ├── manim.animation.growing.GrowArrow.pot
│ │ │ │ ├── manim.animation.growing.GrowFromCenter.pot
│ │ │ │ ├── manim.animation.growing.GrowFromEdge.pot
│ │ │ │ ├── manim.animation.growing.GrowFromPoint.pot
│ │ │ │ ├── manim.animation.growing.SpinInFromNothing.pot
│ │ │ │ ├── manim.animation.growing.pot
│ │ │ │ ├── manim.animation.indication.ApplyWave.pot
│ │ │ │ ├── manim.animation.indication.Circumscribe.pot
│ │ │ │ ├── manim.animation.indication.Flash.pot
│ │ │ │ ├── manim.animation.indication.FocusOn.pot
│ │ │ │ ├── manim.animation.indication.Indicate.pot
│ │ │ │ ├── manim.animation.indication.ShowCreationThenFadeOut.pot
│ │ │ │ ├── manim.animation.indication.ShowPassingFlash.pot
│ │ │ │ ├── manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth.pot
│ │ │ │ ├── manim.animation.indication.Wiggle.pot
│ │ │ │ ├── manim.animation.indication.pot
│ │ │ │ ├── manim.animation.movement.ComplexHomotopy.pot
│ │ │ │ ├── manim.animation.movement.Homotopy.pot
│ │ │ │ ├── manim.animation.movement.MoveAlongPath.pot
│ │ │ │ ├── manim.animation.movement.PhaseFlow.pot
│ │ │ │ ├── manim.animation.movement.SmoothedVectorizedHomotopy.pot
│ │ │ │ ├── manim.animation.movement.pot
│ │ │ │ ├── manim.animation.numbers.ChangeDecimalToValue.pot
│ │ │ │ ├── manim.animation.numbers.ChangingDecimal.pot
│ │ │ │ ├── manim.animation.numbers.pot
│ │ │ │ ├── manim.animation.rotation.Rotate.pot
│ │ │ │ ├── manim.animation.rotation.Rotating.pot
│ │ │ │ ├── manim.animation.rotation.pot
│ │ │ │ ├── manim.animation.specialized.Broadcast.pot
│ │ │ │ ├── manim.animation.specialized.pot
│ │ │ │ ├── manim.animation.speedmodifier.ChangeSpeed.pot
│ │ │ │ ├── manim.animation.speedmodifier.pot
│ │ │ │ ├── manim.animation.transform.ApplyComplexFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyMatrix.pot
│ │ │ │ ├── manim.animation.transform.ApplyMethod.pot
│ │ │ │ ├── manim.animation.transform.ApplyPointwiseFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyPointwiseFunctionToCenter.pot
│ │ │ │ ├── manim.animation.transform.ClockwiseTransform.pot
│ │ │ │ ├── manim.animation.transform.CounterclockwiseTransform.pot
│ │ │ │ ├── manim.animation.transform.CyclicReplace.pot
│ │ │ │ ├── manim.animation.transform.FadeToColor.pot
│ │ │ │ ├── manim.animation.transform.FadeTransform.pot
│ │ │ │ ├── manim.animation.transform.FadeTransformPieces.pot
│ │ │ │ ├── manim.animation.transform.MoveToTarget.pot
│ │ │ │ ├── manim.animation.transform.ReplacementTransform.pot
│ │ │ │ ├── manim.animation.transform.Restore.pot
│ │ │ │ ├── manim.animation.transform.ScaleInPlace.pot
│ │ │ │ ├── manim.animation.transform.ShrinkToCenter.pot
│ │ │ │ ├── manim.animation.transform.Swap.pot
│ │ │ │ ├── manim.animation.transform.Transform.pot
│ │ │ │ ├── manim.animation.transform.TransformAnimations.pot
│ │ │ │ ├── manim.animation.transform.TransformFromCopy.pot
│ │ │ │ ├── manim.animation.transform.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingAbstractBase.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingShapes.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingTex.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.pot
│ │ │ │ ├── manim.animation.update.MaintainPositionRelativeTo.pot
│ │ │ │ ├── manim.animation.update.UpdateFromAlphaFunc.pot
│ │ │ │ ├── manim.animation.update.UpdateFromFunc.pot
│ │ │ │ ├── manim.animation.update.pot
│ │ │ │ ├── manim.animation.updaters.mobject_update_utils.pot
│ │ │ │ ├── manim.animation.updaters.pot
│ │ │ │ ├── manim.animation.updaters.update.MaintainPositionRelativeTo.pot
│ │ │ │ ├── manim.animation.updaters.update.UpdateFromAlphaFunc.pot
│ │ │ │ ├── manim.animation.updaters.update.UpdateFromFunc.pot
│ │ │ │ ├── manim.animation.updaters.update.pot
│ │ │ │ ├── manim.camera.camera.BackgroundColoredVMobjectDisplayer.pot
│ │ │ │ ├── manim.camera.camera.Camera.pot
│ │ │ │ ├── manim.camera.camera.pot
│ │ │ │ ├── manim.camera.mapping_camera.MappingCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.OldMultiCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.SplitScreenCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.pot
│ │ │ │ ├── manim.camera.moving_camera.CameraFrame.pot
│ │ │ │ ├── manim.camera.moving_camera.MovingCamera.pot
│ │ │ │ ├── manim.camera.moving_camera.pot
│ │ │ │ ├── manim.camera.multi_camera.MultiCamera.pot
│ │ │ │ ├── manim.camera.multi_camera.pot
│ │ │ │ ├── manim.camera.three_d_camera.ThreeDCamera.pot
│ │ │ │ ├── manim.camera.three_d_camera.pot
│ │ │ │ ├── manim.constants.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Difference.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Exclusion.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Intersection.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Union.pot
│ │ │ │ ├── manim.mobject.boolean_ops.pot
│ │ │ │ ├── manim.mobject.changing.AnimatedBoundary.pot
│ │ │ │ ├── manim.mobject.changing.TracedPath.pot
│ │ │ │ ├── manim.mobject.changing.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.Axes.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.ComplexPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.CoordinateSystem.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.NumberPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.PolarPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.ThreeDAxes.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.pot
│ │ │ │ ├── manim.mobject.frame.FullScreenFadeRectangle.pot
│ │ │ │ ├── manim.mobject.frame.FullScreenRectangle.pot
│ │ │ │ ├── manim.mobject.frame.PictureInPictureFrame.pot
│ │ │ │ ├── manim.mobject.frame.ScreenRectangle.pot
│ │ │ │ ├── manim.mobject.frame.pot
│ │ │ │ ├── manim.mobject.functions.FunctionGraph.pot
│ │ │ │ ├── manim.mobject.functions.ImplicitFunction.pot
│ │ │ │ ├── manim.mobject.functions.ParametricFunction.pot
│ │ │ │ ├── manim.mobject.functions.pot
│ │ │ │ ├── manim.mobject.geometry.Angle.pot
│ │ │ │ ├── manim.mobject.geometry.AnnotationDot.pot
│ │ │ │ ├── manim.mobject.geometry.AnnularSector.pot
│ │ │ │ ├── manim.mobject.geometry.Annulus.pot
│ │ │ │ ├── manim.mobject.geometry.ArcBetweenPoints.pot
│ │ │ │ ├── manim.mobject.geometry.ArcPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.ArcPolygonFromArcs.pot
│ │ │ │ ├── manim.mobject.geometry.Arrow.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowCircleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowCircleTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowSquareFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowSquareTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTriangleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTriangleTip.pot
│ │ │ │ ├── manim.mobject.geometry.Circle.pot
│ │ │ │ ├── manim.mobject.geometry.CubicBezier.pot
│ │ │ │ ├── manim.mobject.geometry.CurvedArrow.pot
│ │ │ │ ├── manim.mobject.geometry.CurvedDoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.Cutout.pot
│ │ │ │ ├── manim.mobject.geometry.DashedLine.pot
│ │ │ │ ├── manim.mobject.geometry.Dot.pot
│ │ │ │ ├── manim.mobject.geometry.DoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.Elbow.pot
│ │ │ │ ├── manim.mobject.geometry.Ellipse.pot
│ │ │ │ ├── manim.mobject.geometry.LabeledDot.pot
│ │ │ │ ├── manim.mobject.geometry.Polygon.pot
│ │ │ │ ├── manim.mobject.geometry.Rectangle.pot
│ │ │ │ ├── manim.mobject.geometry.RegularPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.RegularPolygram.pot
│ │ │ │ ├── manim.mobject.geometry.RightAngle.pot
│ │ │ │ ├── manim.mobject.geometry.RoundedRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.Sector.pot
│ │ │ │ ├── manim.mobject.geometry.Square.pot
│ │ │ │ ├── manim.mobject.geometry.Star.pot
│ │ │ │ ├── manim.mobject.geometry.TangentLine.pot
│ │ │ │ ├── manim.mobject.geometry.TipableVMobject.pot
│ │ │ │ ├── manim.mobject.geometry.Triangle.pot
│ │ │ │ ├── manim.mobject.geometry.Vector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.AnnotationDot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.AnnularSector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Annulus.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Arc.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcBetweenPoints.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcPolygonFromArcs.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Circle.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CubicBezier.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CurvedArrow.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CurvedDoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Dot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Ellipse.pot
│ │ │ │ ├── manim.mobject.geometry.arc.LabeledDot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Sector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.TipableVMobject.pot
│ │ │ │ ├── manim.mobject.geometry.arc.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Difference.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Exclusion.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Intersection.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Union.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.pot
│ │ │ │ ├── manim.mobject.geometry.line.Angle.pot
│ │ │ │ ├── manim.mobject.geometry.line.Arrow.pot
│ │ │ │ ├── manim.mobject.geometry.line.DashedLine.pot
│ │ │ │ ├── manim.mobject.geometry.line.DoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.line.Elbow.pot
│ │ │ │ ├── manim.mobject.geometry.line.Line.pot
│ │ │ │ ├── manim.mobject.geometry.line.RightAngle.pot
│ │ │ │ ├── manim.mobject.geometry.line.TangentLine.pot
│ │ │ │ ├── manim.mobject.geometry.line.Vector.pot
│ │ │ │ ├── manim.mobject.geometry.line.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Cutout.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Polygon.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Polygram.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Rectangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RegularPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RegularPolygram.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RoundedRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Square.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Star.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Triangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.pot
│ │ │ │ ├── manim.mobject.geometry.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.BackgroundRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.Cross.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.SurroundingRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.Underline.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowCircleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowCircleTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowSquareFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowSquareTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTriangleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTriangleTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.pot
│ │ │ │ ├── manim.mobject.graph.Graph.pot
│ │ │ │ ├── manim.mobject.graph.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.Axes.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.ComplexPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.CoordinateSystem.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.NumberPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.PolarPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.ThreeDAxes.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.pot
│ │ │ │ ├── manim.mobject.graphing.functions.FunctionGraph.pot
│ │ │ │ ├── manim.mobject.graphing.functions.ImplicitFunction.pot
│ │ │ │ ├── manim.mobject.graphing.functions.ParametricFunction.pot
│ │ │ │ ├── manim.mobject.graphing.functions.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.NumberLine.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.UnitInterval.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.pot
│ │ │ │ ├── manim.mobject.graphing.pot
│ │ │ │ ├── manim.mobject.graphing.probability.BarChart.pot
│ │ │ │ ├── manim.mobject.graphing.probability.SampleSpace.pot
│ │ │ │ ├── manim.mobject.graphing.probability.pot
│ │ │ │ ├── manim.mobject.graphing.scale.LinearBase.pot
│ │ │ │ ├── manim.mobject.graphing.scale.LogBase.pot
│ │ │ │ ├── manim.mobject.graphing.scale.pot
│ │ │ │ ├── manim.mobject.logo.ManimBanner.pot
│ │ │ │ ├── manim.mobject.logo.pot
│ │ │ │ ├── manim.mobject.matrix.DecimalMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.IntegerMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.Matrix.pot
│ │ │ │ ├── manim.mobject.matrix.MobjectMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.pot
│ │ │ │ ├── manim.mobject.mobject.Group.pot
│ │ │ │ ├── manim.mobject.mobject.Mobject.pot
│ │ │ │ ├── manim.mobject.mobject.pot
│ │ │ │ ├── manim.mobject.mobject_update_utils.pot
│ │ │ │ ├── manim.mobject.number_line.NumberLine.pot
│ │ │ │ ├── manim.mobject.number_line.UnitInterval.pot
│ │ │ │ ├── manim.mobject.number_line.pot
│ │ │ │ ├── manim.mobject.numbers.DecimalNumber.pot
│ │ │ │ ├── manim.mobject.numbers.Integer.pot
│ │ │ │ ├── manim.mobject.numbers.Variable.pot
│ │ │ │ ├── manim.mobject.numbers.pot
│ │ │ │ ├── manim.mobject.polyhedra.Dodecahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Icosahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Octahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Polyhedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Tetrahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.pot
│ │ │ │ ├── manim.mobject.probability.BarChart.pot
│ │ │ │ ├── manim.mobject.probability.SampleSpace.pot
│ │ │ │ ├── manim.mobject.probability.pot
│ │ │ │ ├── manim.mobject.shape_matchers.BackgroundRectangle.pot
│ │ │ │ ├── manim.mobject.shape_matchers.Cross.pot
│ │ │ │ ├── manim.mobject.shape_matchers.SurroundingRectangle.pot
│ │ │ │ ├── manim.mobject.shape_matchers.Underline.pot
│ │ │ │ ├── manim.mobject.shape_matchers.pot
│ │ │ │ ├── manim.mobject.svg.brace.ArcBrace.pot
│ │ │ │ ├── manim.mobject.svg.brace.Brace.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceBetweenPoints.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceLabel.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceText.pot
│ │ │ │ ├── manim.mobject.svg.brace.pot
│ │ │ │ ├── manim.mobject.svg.code_mobject.Code.pot
│ │ │ │ ├── manim.mobject.svg.code_mobject.pot
│ │ │ │ ├── manim.mobject.svg.pot
│ │ │ │ ├── manim.mobject.svg.style_utils.pot
│ │ │ │ ├── manim.mobject.svg.svg_mobject.SVGMobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_mobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_path.SVGPathMobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_path.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.BulletedList.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.MathTex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.SingleStringMathTex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.Tex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.TexSymbol.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.Title.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.MarkupText.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.Paragraph.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.Text.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.pot
│ │ │ │ ├── manim.mobject.table.DecimalTable.pot
│ │ │ │ ├── manim.mobject.table.IntegerTable.pot
│ │ │ │ ├── manim.mobject.table.MathTable.pot
│ │ │ │ ├── manim.mobject.table.MobjectTable.pot
│ │ │ │ ├── manim.mobject.table.Table.pot
│ │ │ │ ├── manim.mobject.table.pot
│ │ │ │ ├── manim.mobject.text.code_mobject.Code.pot
│ │ │ │ ├── manim.mobject.text.code_mobject.pot
│ │ │ │ ├── manim.mobject.text.numbers.DecimalNumber.pot
│ │ │ │ ├── manim.mobject.text.numbers.Integer.pot
│ │ │ │ ├── manim.mobject.text.numbers.Variable.pot
│ │ │ │ ├── manim.mobject.text.numbers.pot
│ │ │ │ ├── manim.mobject.text.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.BulletedList.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.MathTex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.SingleStringMathTex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.Tex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.TexSymbol.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.Title.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.MarkupText.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.Paragraph.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.Text.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Dodecahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Icosahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Octahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Polyhedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Tetrahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.pot
│ │ │ │ ├── manim.mobject.three_d.pot
│ │ │ │ ├── manim.mobject.three_d.three_d_utils.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Arrow3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cone.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cube.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cylinder.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Dot3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Line3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Prism.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Sphere.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Surface.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.ThreeDVMobject.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Torus.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.pot
│ │ │ │ ├── manim.mobject.three_d_utils.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Arrow3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cone.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cube.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cylinder.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Dot3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Line3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.ParametricSurface.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Prism.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Sphere.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Surface.pot
│ │ │ │ ├── manim.mobject.three_dimensions.ThreeDVMobject.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Torus.pot
│ │ │ │ ├── manim.mobject.three_dimensions.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.AbstractImageMobject.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.ImageMobject.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.ImageMobjectFromCamera.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Mobject1D.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Mobject2D.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PGroup.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PMobject.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Point.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PointCloudDot.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.pot
│ │ │ │ ├── manim.mobject.types.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.DashedVMobject.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VDict.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VGroup.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VMobject.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VectorizedPoint.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.pot
│ │ │ │ ├── manim.mobject.value_tracker.ComplexValueTracker.pot
│ │ │ │ ├── manim.mobject.value_tracker.ValueTracker.pot
│ │ │ │ ├── manim.mobject.value_tracker.pot
│ │ │ │ ├── manim.mobject.vector_field.ArrowVectorField.pot
│ │ │ │ ├── manim.mobject.vector_field.StreamLines.pot
│ │ │ │ ├── manim.mobject.vector_field.VectorField.pot
│ │ │ │ ├── manim.mobject.vector_field.pot
│ │ │ │ ├── manim.scene.moving_camera_scene.MovingCameraScene.pot
│ │ │ │ ├── manim.scene.moving_camera_scene.pot
│ │ │ │ ├── manim.scene.reconfigurable_scene.ReconfigurableScene.pot
│ │ │ │ ├── manim.scene.reconfigurable_scene.pot
│ │ │ │ ├── manim.scene.sample_space_scene.SampleSpaceScene.pot
│ │ │ │ ├── manim.scene.sample_space_scene.pot
│ │ │ │ ├── manim.scene.scene.RerunSceneHandler.pot
│ │ │ │ ├── manim.scene.scene.Scene.pot
│ │ │ │ ├── manim.scene.scene.pot
│ │ │ │ ├── manim.scene.scene_file_writer.SceneFileWriter.pot
│ │ │ │ ├── manim.scene.scene_file_writer.pot
│ │ │ │ ├── manim.scene.section.DefaultSectionType.pot
│ │ │ │ ├── manim.scene.section.Section.pot
│ │ │ │ ├── manim.scene.section.pot
│ │ │ │ ├── manim.scene.three_d_scene.SpecialThreeDScene.pot
│ │ │ │ ├── manim.scene.three_d_scene.ThreeDScene.pot
│ │ │ │ ├── manim.scene.three_d_scene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.LinearTransformationScene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.VectorScene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.pot
│ │ │ │ ├── manim.scene.zoomed_scene.ZoomedScene.pot
│ │ │ │ ├── manim.scene.zoomed_scene.pot
│ │ │ │ ├── manim.utils.bezier.pot
│ │ │ │ ├── manim.utils.color.Colors.pot
│ │ │ │ ├── manim.utils.color.pot
│ │ │ │ ├── manim.utils.commands.pot
│ │ │ │ ├── manim.utils.config_ops.DictAsObject.pot
│ │ │ │ ├── manim.utils.config_ops.pot
│ │ │ │ ├── manim.utils.debug.pot
│ │ │ │ ├── manim.utils.deprecation.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.ManimDirective.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.skip_manim_node.pot
│ │ │ │ ├── manim.utils.docbuild.pot
│ │ │ │ ├── manim.utils.hashing.pot
│ │ │ │ ├── manim.utils.images.pot
│ │ │ │ ├── manim.utils.ipython_magic.ManimMagic.pot
│ │ │ │ ├── manim.utils.ipython_magic.pot
│ │ │ │ ├── manim.utils.iterables.pot
│ │ │ │ ├── manim.utils.paths.pot
│ │ │ │ ├── manim.utils.rate_functions.pot
│ │ │ │ ├── manim.utils.scale.LinearBase.pot
│ │ │ │ ├── manim.utils.scale.LogBase.pot
│ │ │ │ ├── manim.utils.scale.pot
│ │ │ │ ├── manim.utils.simple_functions.pot
│ │ │ │ ├── manim.utils.sounds.pot
│ │ │ │ ├── manim.utils.space_ops.pot
│ │ │ │ ├── manim.utils.strings.pot
│ │ │ │ ├── manim.utils.tex.TexTemplate.pot
│ │ │ │ ├── manim.utils.tex.TexTemplateFromFile.pot
│ │ │ │ ├── manim.utils.tex.pot
│ │ │ │ ├── manim.utils.tex_file_writing.pot
│ │ │ │ ├── manim.utils.tex_templates.TexFontTemplates.pot
│ │ │ │ ├── manim.utils.tex_templates.TexTemplateLibrary.pot
│ │ │ │ ├── manim.utils.tex_templates.pot
│ │ │ │ ├── manim_directive.ManimDirective.pot
│ │ │ │ ├── manim_directive.pot
│ │ │ │ └── manim_directive.skip_manim_node.pot
│ │ │ ├── reference.pot
│ │ │ ├── reference_index/
│ │ │ │ ├── animations.pot
│ │ │ │ ├── cameras.pot
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── mobjects.pot
│ │ │ │ ├── scenes.pot
│ │ │ │ └── utilities_misc.pot
│ │ │ ├── reporting_bugs.pot
│ │ │ ├── tutorials/
│ │ │ │ ├── a_deeper_look.pot
│ │ │ │ ├── building_blocks.pot
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── index.pot
│ │ │ │ ├── output_and_config.pot
│ │ │ │ ├── quickstart.pot
│ │ │ │ └── using_text.pot
│ │ │ ├── tutorials.pot
│ │ │ └── tutorials_guides.pot
│ │ ├── hi/
│ │ │ └── LC_MESSAGES/
│ │ │ └── index.po
│ │ ├── pt/
│ │ │ └── LC_MESSAGES/
│ │ │ └── index.po
│ │ ├── readyForTranslation
│ │ ├── stripUntranslatable.awk
│ │ ├── stripUntranslatable.sh
│ │ └── sv/
│ │ └── LC_MESSAGES/
│ │ ├── contributing.po
│ │ ├── examples.po
│ │ ├── index.po
│ │ ├── installation.po
│ │ ├── plugins.po
│ │ ├── reference.po
│ │ ├── reporting_bugs.po
│ │ ├── tutorials/
│ │ │ ├── building_blocks.po
│ │ │ └── quickstart.po
│ │ └── tutorials.po
│ ├── make.bat
│ ├── requirements.txt
│ ├── rtd-requirements.txt
│ ├── skip-manim
│ └── source/
│ ├── _static/
│ │ ├── custom.css
│ │ ├── manim-binder.min.js.LICENSE.txt
│ │ └── responsiveSvg.js
│ ├── _templates/
│ │ ├── autosummary/
│ │ │ ├── class.rst
│ │ │ └── module.rst
│ │ └── logo-text.html
│ ├── changelog/
│ │ ├── 0.1.0-changelog.rst
│ │ ├── 0.1.1-changelog.rst
│ │ ├── 0.10.0-changelog.rst
│ │ ├── 0.11.0-changelog.rst
│ │ ├── 0.12.0-changelog.rst
│ │ ├── 0.13.0-changelog.rst
│ │ ├── 0.13.1-changelog.rst
│ │ ├── 0.14.0-changelog.rst
│ │ ├── 0.15.0-changelog.rst
│ │ ├── 0.15.1-changelog.rst
│ │ ├── 0.15.2-changelog.rst
│ │ ├── 0.16.0-changelog.rst
│ │ ├── 0.17.0-changelog.rst
│ │ ├── 0.17.1-changelog.rst
│ │ ├── 0.17.2-changelog.rst
│ │ ├── 0.17.3-changelog.rst
│ │ ├── 0.18.0-changelog.rst
│ │ ├── 0.18.0.post0-changelog.rst
│ │ ├── 0.18.1-changelog.md
│ │ ├── 0.19.0-changelog.rst
│ │ ├── 0.19.1-changelog.md
│ │ ├── 0.19.2-changelog.md
│ │ ├── 0.2.0-changelog.rst
│ │ ├── 0.20.0-changelog.md
│ │ ├── 0.20.1-changelog.md
│ │ ├── 0.3.0-changelog.rst
│ │ ├── 0.4.0-changelog.rst
│ │ ├── 0.5.0-changelog.rst
│ │ ├── 0.6.0-changelog.rst
│ │ ├── 0.7.0-changelog.rst
│ │ ├── 0.8.0-changelog.rst
│ │ └── 0.9.0-changelog.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── contributing/
│ │ ├── development.md
│ │ ├── docs/
│ │ │ ├── admonitions.rst
│ │ │ ├── docstrings.rst
│ │ │ ├── examples.rst
│ │ │ ├── references.rst
│ │ │ ├── types.rst
│ │ │ └── typings.rst
│ │ ├── docs.rst
│ │ ├── internationalization.rst
│ │ ├── performance.rst
│ │ └── testing.rst
│ ├── contributing.rst
│ ├── examples.rst
│ ├── faq/
│ │ ├── general.md
│ │ ├── help.md
│ │ ├── index.rst
│ │ ├── installation.md
│ │ ├── internals.md
│ │ └── opengl.md
│ ├── guides/
│ │ ├── add_voiceovers.rst
│ │ ├── configuration.rst
│ │ ├── deep_dive.rst
│ │ ├── index.rst
│ │ └── using_text.rst
│ ├── index.rst
│ ├── installation/
│ │ ├── conda.rst
│ │ ├── docker.rst
│ │ ├── jupyter.rst
│ │ └── uv.md
│ ├── installation.rst
│ ├── plugins.rst
│ ├── reference.rst
│ ├── reference_index/
│ │ ├── animations.rst
│ │ ├── cameras.rst
│ │ ├── configuration.rst
│ │ ├── mobjects.rst
│ │ ├── scenes.rst
│ │ └── utilities_misc.rst
│ ├── robots.txt
│ ├── tutorials/
│ │ ├── building_blocks.rst
│ │ ├── index.rst
│ │ ├── output_and_config.rst
│ │ └── quickstart.rst
│ └── tutorials_guides.rst
├── example_scenes/
│ ├── advanced_tex_fonts.py
│ ├── basic.py
│ ├── custom_template.tex
│ ├── customtex.py
│ ├── manim.cfg
│ ├── manim_jupyter_example.ipynb
│ └── opengl.py
├── lgtm.yml
├── manim/
│ ├── __init__.py
│ ├── __main__.py
│ ├── _config/
│ │ ├── __init__.py
│ │ ├── cli_colors.py
│ │ ├── default.cfg
│ │ ├── logger_utils.py
│ │ └── utils.py
│ ├── animation/
│ │ ├── __init__.py
│ │ ├── animation.py
│ │ ├── changing.py
│ │ ├── composition.py
│ │ ├── creation.py
│ │ ├── fading.py
│ │ ├── growing.py
│ │ ├── indication.py
│ │ ├── movement.py
│ │ ├── numbers.py
│ │ ├── rotation.py
│ │ ├── specialized.py
│ │ ├── speedmodifier.py
│ │ ├── transform.py
│ │ ├── transform_matching_parts.py
│ │ └── updaters/
│ │ ├── __init__.py
│ │ ├── mobject_update_utils.py
│ │ └── update.py
│ ├── camera/
│ │ ├── __init__.py
│ │ ├── camera.py
│ │ ├── mapping_camera.py
│ │ ├── moving_camera.py
│ │ ├── multi_camera.py
│ │ └── three_d_camera.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cfg/
│ │ │ ├── __init__.py
│ │ │ └── group.py
│ │ ├── checkhealth/
│ │ │ ├── __init__.py
│ │ │ ├── checks.py
│ │ │ └── commands.py
│ │ ├── default_group.py
│ │ ├── init/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── plugins/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ └── render/
│ │ ├── __init__.py
│ │ ├── commands.py
│ │ ├── ease_of_access_options.py
│ │ ├── global_options.py
│ │ ├── output_options.py
│ │ └── render_options.py
│ ├── constants.py
│ ├── data_structures.py
│ ├── mobject/
│ │ ├── __init__.py
│ │ ├── frame.py
│ │ ├── geometry/
│ │ │ ├── __init__.py
│ │ │ ├── arc.py
│ │ │ ├── boolean_ops.py
│ │ │ ├── labeled.py
│ │ │ ├── line.py
│ │ │ ├── polygram.py
│ │ │ ├── shape_matchers.py
│ │ │ └── tips.py
│ │ ├── graph.py
│ │ ├── graphing/
│ │ │ ├── __init__.py
│ │ │ ├── coordinate_systems.py
│ │ │ ├── functions.py
│ │ │ ├── number_line.py
│ │ │ ├── probability.py
│ │ │ └── scale.py
│ │ ├── logo.py
│ │ ├── matrix.py
│ │ ├── mobject.py
│ │ ├── opengl/
│ │ │ ├── __init__.py
│ │ │ ├── dot_cloud.py
│ │ │ ├── opengl_compatibility.py
│ │ │ ├── opengl_geometry.py
│ │ │ ├── opengl_image_mobject.py
│ │ │ ├── opengl_mobject.py
│ │ │ ├── opengl_point_cloud_mobject.py
│ │ │ ├── opengl_surface.py
│ │ │ ├── opengl_three_dimensions.py
│ │ │ └── opengl_vectorized_mobject.py
│ │ ├── svg/
│ │ │ ├── __init__.py
│ │ │ ├── brace.py
│ │ │ └── svg_mobject.py
│ │ ├── table.py
│ │ ├── text/
│ │ │ ├── __init__.py
│ │ │ ├── code_mobject.py
│ │ │ ├── numbers.py
│ │ │ ├── tex_mobject.py
│ │ │ └── text_mobject.py
│ │ ├── three_d/
│ │ │ ├── __init__.py
│ │ │ ├── polyhedra.py
│ │ │ ├── three_d_utils.py
│ │ │ └── three_dimensions.py
│ │ ├── types/
│ │ │ ├── __init__.py
│ │ │ ├── image_mobject.py
│ │ │ ├── point_cloud_mobject.py
│ │ │ └── vectorized_mobject.py
│ │ ├── utils.py
│ │ ├── value_tracker.py
│ │ └── vector_field.py
│ ├── opengl/
│ │ └── __init__.py
│ ├── plugins/
│ │ ├── __init__.py
│ │ └── plugins_flags.py
│ ├── py.typed
│ ├── renderer/
│ │ ├── __init__.py
│ │ ├── cairo_renderer.py
│ │ ├── opengl_renderer.py
│ │ ├── opengl_renderer_window.py
│ │ ├── shader.py
│ │ ├── shader_wrapper.py
│ │ ├── shaders/
│ │ │ ├── default/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── design.frag
│ │ │ ├── design_2.frag
│ │ │ ├── design_3.frag
│ │ │ ├── image/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── include/
│ │ │ │ ├── NOTE.md
│ │ │ │ ├── add_light.glsl
│ │ │ │ ├── camera_uniform_declarations.glsl
│ │ │ │ ├── finalize_color.glsl
│ │ │ │ ├── get_gl_Position.glsl
│ │ │ │ ├── get_rotated_surface_unit_normal_vector.glsl
│ │ │ │ ├── get_unit_normal.glsl
│ │ │ │ ├── position_point_into_frame.glsl
│ │ │ │ ├── quadratic_bezier_distance.glsl
│ │ │ │ └── quadratic_bezier_geometry_functions.glsl
│ │ │ ├── manim_coords/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── quadratic_bezier_fill/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── quadratic_bezier_stroke/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── simple_vert.glsl
│ │ │ ├── surface/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── test/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── textured_surface/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── true_dot/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── vectorized_mobject_fill/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── vectorized_mobject_stroke/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ └── vertex_colors/
│ │ │ ├── frag.glsl
│ │ │ └── vert.glsl
│ │ └── vectorized_mobject_rendering.py
│ ├── scene/
│ │ ├── __init__.py
│ │ ├── moving_camera_scene.py
│ │ ├── scene.py
│ │ ├── scene_file_writer.py
│ │ ├── section.py
│ │ ├── three_d_scene.py
│ │ ├── vector_space_scene.py
│ │ └── zoomed_scene.py
│ ├── templates/
│ │ ├── Axes.mtp
│ │ ├── Default.mtp
│ │ ├── MovingCamera.mtp
│ │ └── template.cfg
│ ├── typing.py
│ └── utils/
│ ├── __init__.py
│ ├── bezier.py
│ ├── caching.py
│ ├── color/
│ │ ├── AS2700.py
│ │ ├── BS381.py
│ │ ├── DVIPSNAMES.py
│ │ ├── SVGNAMES.py
│ │ ├── X11.py
│ │ ├── XKCD.py
│ │ ├── __init__.py
│ │ ├── core.py
│ │ └── manim_colors.py
│ ├── commands.py
│ ├── config_ops.py
│ ├── debug.py
│ ├── deprecation.py
│ ├── docbuild/
│ │ ├── __init__.py
│ │ ├── autoaliasattr_directive.py
│ │ ├── autocolor_directive.py
│ │ ├── manim_directive.py
│ │ └── module_parsing.py
│ ├── exceptions.py
│ ├── family.py
│ ├── family_ops.py
│ ├── file_ops.py
│ ├── hashing.py
│ ├── images.py
│ ├── ipython_magic.py
│ ├── iterables.py
│ ├── module_ops.py
│ ├── opengl.py
│ ├── parameter_parsing.py
│ ├── paths.py
│ ├── polylabel.py
│ ├── qhull.py
│ ├── rate_functions.py
│ ├── simple_functions.py
│ ├── sounds.py
│ ├── space_ops.py
│ ├── testing/
│ │ ├── __init__.py
│ │ ├── _frames_testers.py
│ │ ├── _show_diff.py
│ │ ├── _test_class_makers.py
│ │ ├── config_graphical_tests_monoframe.cfg
│ │ ├── config_graphical_tests_multiframes.cfg
│ │ └── frames_comparison.py
│ ├── tex.py
│ ├── tex_file_writing.py
│ ├── tex_templates.py
│ └── unit.py
├── mypy.ini
├── pyproject.toml
├── scripts/
│ ├── TEMPLATE.cff
│ ├── extract_frames.py
│ ├── make_and_open_docs.py
│ ├── release.py
│ └── template_docsting_with_example.py
└── tests/
├── __init__.py
├── assert_utils.py
├── conftest.py
├── control_data/
│ ├── logs_data/
│ │ ├── BasicSceneLoggingTest.txt
│ │ └── bad_tex_scene_BadTex.txt
│ └── videos_data/
│ ├── InputFileViaCfg.json
│ ├── SceneWithDisabledSections.json
│ ├── SceneWithEnabledSections.json
│ ├── SceneWithMultipleCallsWithNFlag.json
│ ├── SceneWithMultiplePlayCallsWithNFlag.json
│ ├── SceneWithMultipleWaitCallsWithNFlag.json
│ ├── SceneWithSections.json
│ ├── SceneWithSkipAnimations.json
│ ├── SquareToCircleWithDefaultValues.json
│ └── SquareToCircleWithlFlag.json
├── helpers/
│ ├── __init__.py
│ ├── graphical_units.py
│ ├── path_utils.py
│ └── video_utils.py
├── interface/
│ └── test_commands.py
├── miscellaneous/
│ └── test_version.py
├── module/
│ ├── animation/
│ │ ├── test_animate.py
│ │ ├── test_animation.py
│ │ ├── test_composition.py
│ │ ├── test_creation.py
│ │ ├── test_override_animation.py
│ │ ├── test_transform.py
│ │ └── test_updaters.py
│ ├── mobject/
│ │ ├── geometry/
│ │ │ └── test_unit_geometry.py
│ │ ├── graphing/
│ │ │ ├── test_axes_shift.py
│ │ │ ├── test_coordinate_system.py
│ │ │ ├── test_number_line.py
│ │ │ └── test_ticks.py
│ │ ├── mobject/
│ │ │ ├── test_copy.py
│ │ │ ├── test_family.py
│ │ │ ├── test_get_set.py
│ │ │ ├── test_mobject.py
│ │ │ ├── test_opengl_metaclass.py
│ │ │ └── test_set_attr.py
│ │ ├── svg/
│ │ │ └── test_svg_mobject.py
│ │ ├── test_boolean_ops.py
│ │ ├── test_graph.py
│ │ ├── test_image.py
│ │ ├── test_matrix.py
│ │ ├── test_table.py
│ │ ├── test_value_tracker.py
│ │ ├── text/
│ │ │ ├── test_markup.py
│ │ │ ├── test_numbers.py
│ │ │ ├── test_texmobject.py
│ │ │ └── test_text_mobject.py
│ │ └── types/
│ │ └── vectorized_mobject/
│ │ ├── test_dashed_vmobject.py
│ │ ├── test_stroke.py
│ │ └── test_vectorized_mobject.py
│ ├── scene/
│ │ ├── test_auto_zoom.py
│ │ ├── test_scene.py
│ │ ├── test_sound.py
│ │ └── test_threed_scene.py
│ └── utils/
│ ├── _split_matrices.py
│ ├── _subdivision_matrices.py
│ ├── test_bezier.py
│ ├── test_color.py
│ ├── test_deprecation.py
│ ├── test_file_ops.py
│ ├── test_hashing.py
│ ├── test_manim_color.py
│ ├── test_space_ops.py
│ ├── test_tex.py
│ └── test_units.py
├── opengl/
│ ├── __init__.py
│ ├── control_data/
│ │ └── coordinate_system_opengl/
│ │ ├── gradient_line_graph_x_axis_using_opengl_renderer[None].npz
│ │ └── gradient_line_graph_y_axis_using_opengl_renderer[None].npz
│ ├── test_animate_opengl.py
│ ├── test_axes_shift_opengl.py
│ ├── test_color_opengl.py
│ ├── test_composition_opengl.py
│ ├── test_config_opengl.py
│ ├── test_coordinate_system_opengl.py
│ ├── test_copy_opengl.py
│ ├── test_family_opengl.py
│ ├── test_graph_opengl.py
│ ├── test_ipython_magic_opengl.py
│ ├── test_markup_opengl.py
│ ├── test_number_line_opengl.py
│ ├── test_numbers_opengl.py
│ ├── test_opengl_mobject.py
│ ├── test_opengl_surface.py
│ ├── test_opengl_vectorized_mobject.py
│ ├── test_override_animation_opengl.py
│ ├── test_scene_opengl.py
│ ├── test_sound_opengl.py
│ ├── test_stroke_opengl.py
│ ├── test_svg_mobject_opengl.py
│ ├── test_texmobject_opengl.py
│ ├── test_text_mobject_opengl.py
│ ├── test_ticks_opengl.py
│ ├── test_unit_geometry_opengl.py
│ └── test_value_tracker_opengl.py
├── standard_config.cfg
├── template_generate_graphical_units_data.py
├── test_camera.py
├── test_code_mobject.py
├── test_config.py
├── test_graphical_units/
│ ├── __init__.py
│ ├── conftest.py
│ ├── control_data/
│ │ ├── boolean_ops/
│ │ │ ├── difference.npz
│ │ │ ├── exclusion.npz
│ │ │ ├── intersection.npz
│ │ │ ├── intersection_3_mobjects.npz
│ │ │ └── union.npz
│ │ ├── brace/
│ │ │ ├── arcBrace.npz
│ │ │ ├── braceTip.npz
│ │ │ └── brace_sharpness.npz
│ │ ├── composition/
│ │ │ ├── animationgroup_is_passing_remover_to_animations.npz
│ │ │ └── animationgroup_is_passing_remover_to_nested_animationgroups.npz
│ │ ├── coordinate_system/
│ │ │ ├── gradient_line_graph_x_axis.npz
│ │ │ ├── gradient_line_graph_y_axis.npz
│ │ │ ├── implicit_graph.npz
│ │ │ ├── line_graph.npz
│ │ │ ├── number_plane.npz
│ │ │ ├── number_plane_log.npz
│ │ │ ├── plot_log_x_axis.npz
│ │ │ ├── plot_log_x_axis_vectorized.npz
│ │ │ ├── plot_surface.npz
│ │ │ └── plot_surface_colorscale.npz
│ │ ├── coordinate_systems/
│ │ │ └── NumberPlaneTest.npz
│ │ ├── creation/
│ │ │ ├── DrawBorderThenFill.npz
│ │ │ ├── FadeIn.npz
│ │ │ ├── FadeOut.npz
│ │ │ ├── GrowFromCenter.npz
│ │ │ ├── GrowFromEdge.npz
│ │ │ ├── GrowFromPoint.npz
│ │ │ ├── ShrinkToCenter.npz
│ │ │ ├── SpinInFromNothing.npz
│ │ │ ├── SpiralIn.npz
│ │ │ ├── bring_to_back_introducer.npz
│ │ │ ├── create.npz
│ │ │ ├── uncreate.npz
│ │ │ ├── uncreate_rate_func.npz
│ │ │ └── z_index_introducer.npz
│ │ ├── functions/
│ │ │ ├── FunctionGraph.npz
│ │ │ └── ImplicitFunction.npz
│ │ ├── geometry/
│ │ │ ├── Angle.npz
│ │ │ ├── AngledArrowTip.npz
│ │ │ ├── AnnotationDot.npz
│ │ │ ├── AnnularSector.npz
│ │ │ ├── Annulus.npz
│ │ │ ├── Arc.npz
│ │ │ ├── ArcBetweenPoints.npz
│ │ │ ├── Arrange.npz
│ │ │ ├── Circle.npz
│ │ │ ├── CirclePoints.npz
│ │ │ ├── ConvexHull.npz
│ │ │ ├── Coordinates.npz
│ │ │ ├── CurvedArrow.npz
│ │ │ ├── CurvedArrowCustomTip.npz
│ │ │ ├── CustomDoubleArrow.npz
│ │ │ ├── DashedVMobject.npz
│ │ │ ├── DashedVMobjectTest.npz
│ │ │ ├── Dot.npz
│ │ │ ├── DoubleArrow.npz
│ │ │ ├── Elbow.npz
│ │ │ ├── Ellipse.npz
│ │ │ ├── LabeledArrow.npz
│ │ │ ├── LabeledLine.npz
│ │ │ ├── LabeledPolygram.npz
│ │ │ ├── Line.npz
│ │ │ ├── Polygon.npz
│ │ │ ├── Polygram.npz
│ │ │ ├── Rectangle.npz
│ │ │ ├── RegularPolygram.npz
│ │ │ ├── RightAngle.npz
│ │ │ ├── RoundedRectangle.npz
│ │ │ ├── Sector.npz
│ │ │ ├── Star.npz
│ │ │ ├── Vector.npz
│ │ │ ├── ZIndex.npz
│ │ │ ├── negative_z_index_AnimationGroup.npz
│ │ │ ├── negative_z_index_LaggedStart.npz
│ │ │ ├── nested_animation_groups_with_negative_z_index.npz
│ │ │ └── three_points_Angle.npz
│ │ ├── img_and_svg/
│ │ │ ├── Arcs01.npz
│ │ │ ├── Arcs02.npz
│ │ │ ├── BrachistochroneCurve.npz
│ │ │ ├── ContiguousUSMap.npz
│ │ │ ├── CubicAndLineto.npz
│ │ │ ├── CubicPath.npz
│ │ │ ├── DesmosGraph1.npz
│ │ │ ├── HalfEllipse.npz
│ │ │ ├── Heart.npz
│ │ │ ├── ImageInterpolation.npz
│ │ │ ├── ImageMobject.npz
│ │ │ ├── Inheritance.npz
│ │ │ ├── Line.npz
│ │ │ ├── ManimLogo.npz
│ │ │ ├── MatrixTransform.npz
│ │ │ ├── MultiPartPath.npz
│ │ │ ├── MultipleTransform.npz
│ │ │ ├── Penrose.npz
│ │ │ ├── PixelizedText.npz
│ │ │ ├── QuadraticPath.npz
│ │ │ ├── Rhomboid.npz
│ │ │ ├── RotateTransform.npz
│ │ │ ├── ScaleTransform.npz
│ │ │ ├── SingleUSState.npz
│ │ │ ├── SkewXTransform.npz
│ │ │ ├── SkewYTransform.npz
│ │ │ ├── SmoothCurves.npz
│ │ │ ├── TranslateTransform.npz
│ │ │ ├── UKFlag.npz
│ │ │ ├── UseTagInheritance.npz
│ │ │ ├── VideoIcon.npz
│ │ │ ├── WatchTheDecimals.npz
│ │ │ ├── WeightSVG.npz
│ │ │ └── path_multiple_moves.npz
│ │ ├── indication/
│ │ │ ├── ApplyWave.npz
│ │ │ ├── Circumscribe.npz
│ │ │ ├── Flash.npz
│ │ │ ├── FocusOn.npz
│ │ │ ├── Indicate.npz
│ │ │ ├── ShowPassingFlash.npz
│ │ │ └── Wiggle.npz
│ │ ├── logo/
│ │ │ └── banner.npz
│ │ ├── mobjects/
│ │ │ ├── PointCloudDot.npz
│ │ │ ├── become.npz
│ │ │ ├── become_no_color_linking.npz
│ │ │ ├── match_style.npz
│ │ │ ├── vmobject_cap_styles.npz
│ │ │ └── vmobject_joint_types.npz
│ │ ├── modifier_methods/
│ │ │ ├── Gradient.npz
│ │ │ └── GradientRotation.npz
│ │ ├── movements/
│ │ │ ├── Homotopy.npz
│ │ │ ├── MoveAlongPath.npz
│ │ │ ├── MoveTo.npz
│ │ │ ├── PhaseFlow.npz
│ │ │ ├── Rotate.npz
│ │ │ └── Shift.npz
│ │ ├── numbers/
│ │ │ └── set_value_with_updaters.npz
│ │ ├── opengl/
│ │ │ ├── Circle.npz
│ │ │ └── FixedMobjects3D.npz
│ │ ├── plot/
│ │ │ ├── PlotFunctions.npz
│ │ │ ├── axes.npz
│ │ │ ├── axis_tip_custom_width_height.npz
│ │ │ ├── axis_tip_default_width_height.npz
│ │ │ ├── custom_coordinates.npz
│ │ │ ├── get_area.npz
│ │ │ ├── get_area_with_boundary_and_few_plot_points.npz
│ │ │ ├── get_area_with_riemann_rectangles.npz
│ │ │ ├── get_axis_labels.npz
│ │ │ ├── get_graph_label.npz
│ │ │ ├── get_lines_to_point.npz
│ │ │ ├── get_riemann_rectangles_use_vectorized[False].npz
│ │ │ ├── get_riemann_rectangles_use_vectorized[True].npz
│ │ │ ├── get_x_axis_label.npz
│ │ │ ├── get_y_axis_label.npz
│ │ │ ├── get_z_axis_label.npz
│ │ │ ├── log_scaling_graph.npz
│ │ │ ├── plot_derivative_graph_use_vectorized[False].npz
│ │ │ ├── plot_derivative_graph_use_vectorized[True].npz
│ │ │ ├── plot_functions_use_vectorized[False].npz
│ │ │ ├── plot_functions_use_vectorized[True].npz
│ │ │ ├── plot_line_graph.npz
│ │ │ ├── plot_use_vectorized[False].npz
│ │ │ ├── plot_use_vectorized[True].npz
│ │ │ ├── polar_graph.npz
│ │ │ └── t_label.npz
│ │ ├── polyhedra/
│ │ │ ├── ConvexHull3D.npz
│ │ │ ├── Dodecahedron.npz
│ │ │ ├── Icosahedron.npz
│ │ │ ├── Octahedron.npz
│ │ │ └── Tetrahedron.npz
│ │ ├── probability/
│ │ │ ├── advanced_customization.npz
│ │ │ ├── change_bar_values_negative.npz
│ │ │ ├── change_bar_values_some_vals.npz
│ │ │ ├── default_chart.npz
│ │ │ ├── get_bar_labels.npz
│ │ │ ├── label_constructor.npz
│ │ │ └── negative_values.npz
│ │ ├── specialized/
│ │ │ └── Broadcast.npz
│ │ ├── speed/
│ │ │ └── SpeedModifier.npz
│ │ ├── tables/
│ │ │ ├── DecimalTable.npz
│ │ │ ├── IntegerTable.npz
│ │ │ ├── MathTable.npz
│ │ │ ├── MobjectTable.npz
│ │ │ └── Table.npz
│ │ ├── tex_mobject/
│ │ │ ├── color_inheritance.npz
│ │ │ └── set_opacity_by_tex.npz
│ │ ├── threed/
│ │ │ ├── AddFixedInFrameMobjects.npz
│ │ │ ├── AmbientCameraMove.npz
│ │ │ ├── Arrow3D.npz
│ │ │ ├── Axes.npz
│ │ │ ├── CameraMove.npz
│ │ │ ├── CameraMoveAxes.npz
│ │ │ ├── Cone.npz
│ │ │ ├── Cube.npz
│ │ │ ├── Cylinder.npz
│ │ │ ├── Dot3D.npz
│ │ │ ├── Line3D.npz
│ │ │ ├── MovingVertices.npz
│ │ │ ├── Sphere.npz
│ │ │ ├── SurfaceColorscale.npz
│ │ │ ├── Torus.npz
│ │ │ └── Y_Direction.npz
│ │ ├── transform/
│ │ │ ├── AnimationBuilder.npz
│ │ │ ├── ApplyComplexFunction.npz
│ │ │ ├── ApplyFunction.npz
│ │ │ ├── ApplyMatrix.npz
│ │ │ ├── ApplyPointwiseFunction.npz
│ │ │ ├── ClockwiseTransform.npz
│ │ │ ├── CounterclockwiseTransform.npz
│ │ │ ├── CyclicReplace.npz
│ │ │ ├── FadeInAndOut.npz
│ │ │ ├── FadeToColort.npz
│ │ │ ├── FadeTransform.npz
│ │ │ ├── FadeTransformPieces.npz
│ │ │ ├── FadeTransform_TargetIsEmpty_FadesOutInPlace.npz
│ │ │ ├── FullRotation.npz
│ │ │ ├── MatchPointsScene.npz
│ │ │ ├── MoveToTarget.npz
│ │ │ ├── ReplacementTransform.npz
│ │ │ ├── Restore.npz
│ │ │ ├── ScaleInPlace.npz
│ │ │ ├── ShrinkToCenter.npz
│ │ │ ├── Transform.npz
│ │ │ ├── TransformFromCopy.npz
│ │ │ ├── TransformWithConflictingPaths.npz
│ │ │ ├── TransformWithPathArcCenters.npz
│ │ │ └── TransformWithPathFunc.npz
│ │ ├── transform_matching_parts/
│ │ │ ├── TransformMatchingDisplaysCorrect.npz
│ │ │ ├── TransformMatchingLeavesOneObject.npz
│ │ │ ├── TransformMatchingTex.npz
│ │ │ ├── TransformMatchingTex_FadeTransformMismatches.npz
│ │ │ ├── TransformMatchingTex_FadeTransformMismatches_NothingToFade.npz
│ │ │ └── TransformMatchingTex_TransformMismatches.npz
│ │ ├── updaters/
│ │ │ ├── LastFrameWhenCleared.npz
│ │ │ ├── UpdateSceneDuringAnimation.npz
│ │ │ ├── Updater.npz
│ │ │ └── ValueTracker.npz
│ │ ├── utils/
│ │ │ └── pixel_error_threshold.npz
│ │ └── vector_scene/
│ │ └── vector_to_coords.npz
│ ├── test_animation.py
│ ├── test_axes.py
│ ├── test_banner.py
│ ├── test_boolops.py
│ ├── test_brace.py
│ ├── test_composition.py
│ ├── test_coordinate_systems.py
│ ├── test_creation.py
│ ├── test_functions.py
│ ├── test_geometry.py
│ ├── test_img_and_svg.py
│ ├── test_indication.py
│ ├── test_mobjects.py
│ ├── test_modifier_methods.py
│ ├── test_movements.py
│ ├── test_numbers.py
│ ├── test_opengl.py
│ ├── test_polyhedra.py
│ ├── test_probability.py
│ ├── test_specialized.py
│ ├── test_speed.py
│ ├── test_tables.py
│ ├── test_tex_mobject.py
│ ├── test_text.py
│ ├── test_threed.py
│ ├── test_transform.py
│ ├── test_transform_matching_parts.py
│ ├── test_updaters.py
│ ├── test_utils.py
│ └── test_vector_scene.py
├── test_ipython_magic.py
├── test_linear_transformation_scene.py
├── test_logging/
│ ├── __init__.py
│ ├── bad_tex_scene.py
│ ├── basic_scenes_error.py
│ ├── basic_scenes_square_to_circle.py
│ ├── basic_scenes_write_stuff.py
│ └── test_logging.py
├── test_plugins/
│ ├── __init__.py
│ ├── simple_scenes.py
│ └── test_plugins.py
├── test_scene_rendering/
│ ├── __init__.py
│ ├── conftest.py
│ ├── infallible_scenes.py
│ ├── opengl/
│ │ ├── __init__.py
│ │ ├── test_caching_related_opengl.py
│ │ ├── test_cli_flags_opengl.py
│ │ ├── test_opengl_renderer.py
│ │ └── test_play_logic_opengl.py
│ ├── simple_scenes.py
│ ├── test_caching_related.py
│ ├── test_cairo_renderer.py
│ ├── test_cli_flags.py
│ ├── test_file_writer.py
│ ├── test_play_logic.py
│ └── test_sections.py
└── utils/
├── __init__.py
├── logging_tester.py
├── test_polylabels.py
├── testing_utils.py
└── video_tester.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .codecov.yml
================================================
codecov:
notify:
require_ci_to_pass: no
after_n_builds: 1
coverage:
status:
project:
default:
# Require 1% coverage, i.e., always succeed
target: 1
patch: true
changes: false
comment: off
================================================
FILE: .codespell_ignorewords
================================================
nam
sherif
falsy
medias
strager
================================================
FILE: .codespellrc
================================================
[codespell]
check-hidden = True
skip = .git,*.js,*.js.map,*.css,*.css.map,*.html,*.po,*.pot,uv.lock,*.log,*.svg
ignore-words = .codespell_ignorewords
================================================
FILE: .dockerignore
================================================
.git
# Development / test artifacts
__pycache__
**/__pycache__
*.pyc
*.pyo
*.pyd
*.egg-info
dist/
build/
coverage.xml
# Not needed to install the package
docs/
tests/
example_scenes/
media/
logo/
scripts/
================================================
FILE: .flake8
================================================
[flake8]
# Exclude the grpc generated code
exclude = ./manim/grpc/gen/*, __pycache__,.git,
per-file-ignores = __init__.py:F401
max-complexity = 29
max-line-length = 88
statistics = True
# Prevents some flake8-rst-docstrings errors
rst-roles = attr,class,func,meth,mod,obj,ref,doc,exc
rst-directives = manim, SEEALSO, seealso
docstring-convention=numpy
select = A,A00,B,B9,C4,C90,D,E,F,F,PT,RST,SIM,W,F401
# General Compatibility
extend-ignore = E203, W503, D202, D212, D213, D404
# Misc
F401, F403, F405, F841, E501, E731, E402, F811, F821,
# multiple statements on one line (overload)
E704,
# Plug-in: flake8-builtins
A001, A002, A003,
# Plug-in: flake8-bugbear
B006, B007, B008, B009, B010, B903, B950,
# Plug-in: flake8-simplify
SIM105, SIM106, SIM119,
# Plug-in: flake8-pytest-style
PT001, PT004, PT006, PT011, PT018, PT022, PT023,
# Plug-in: flake8-docstrings
D100, D101, D102, D103, D104, D105, D106, D107,
D200, D202, D204, D205, D209,
D301,
D400, D401, D402, D403, D405, D406, D407, D409, D411, D412, D414,
# Plug-in: flake8-rst-docstrings
RST201, RST203, RST210, RST212, RST213, RST215,
RST301, RST303, RST499
================================================
FILE: .git-blame-ignore-revs
================================================
# Switched to ruff format:
24025b60d57301b0a59754c38d77bccd8ed69feb
================================================
FILE: .gitattributes
================================================
# Declare files that always have LF line endings on checkout
* text eol=lf
*.bat text eol=crlf
# Denote all files that are truly binary and should not be modified
*.npz binary
*.png binary
*.wav binary
manim/grpc/gen/** linguist-generated=true
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Manim bug
about: Report a bug or unexpected behavior when running Manim
title: ""
labels: bug
assignees: ''
---
## Description of bug / unexpected behavior
<!-- Add a clear and concise description of the problem you encountered. -->
## Expected behavior
<!-- Add a clear and concise description of what you expected to happen. -->
## How to reproduce the issue
<!-- Provide a piece of code illustrating the undesired behavior. -->
<details><summary>Code for reproducing the problem</summary>
```py
Paste your code here.
```
</details>
## Additional media files
<!-- Paste in the files manim produced on rendering the code above. -->
<details><summary>Images/GIFs</summary>
<!-- PASTE MEDIA HERE -->
</details>
## Logs
<details><summary>Terminal output</summary>
<!-- Add "-v DEBUG" when calling manim to generate more detailed logs -->
```
PASTE HERE OR PROVIDE LINK TO https://pastebin.com/ OR SIMILAR
```
<!-- Insert screenshots here (only when absolutely necessary, we prefer copy/pasted output!) -->
</details>
## System specifications
<details><summary>System Details</summary>
- OS (with version, e.g., Windows 10 v2004 or macOS 10.15 (Catalina)):
- RAM:
- Python version (`python/py/python3 --version`):
- Installed modules (provide output from `pip list`):
```
PASTE HERE
```
</details>
<details><summary>LaTeX details</summary>
+ LaTeX distribution (e.g. TeX Live 2020):
+ Installed LaTeX packages:
<!-- output of `tlmgr list --only-installed` for TeX Live or a screenshot of the Packages page for MikTeX -->
</details>
## Additional comments
<!-- Add further context that you think might be relevant for this issue here. -->
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Request a new feature for Manim
title: ""
labels: new feature
assignees: ''
---
## Description of proposed feature
<!-- Add a clear and concise description of the new feature, including a motivation: why do you think this will be useful? -->
## How can the new feature be used?
<!-- If possible, illustrate how this new feature could be used. -->
## Additional comments
<!-- Add further context that you think might be relevant. -->
================================================
FILE: .github/ISSUE_TEMPLATE/installation_issue.md
================================================
---
name: Installation issue
about: Report issues with the installation process of Manim
title: ""
labels: bug, installation
assignees: ''
---
#### Preliminaries
- [ ] I have followed the latest version of the
[installation instructions](https://docs.manim.community/en/stable/installation.html).
- [ ] I have checked the [installation FAQ](https://docs.manim.community/en/stable/faq/installation.html) and my problem is either not mentioned there,
or the solution given there does not help.
## Description of error
<!-- Add a clear and concise description of the problem you encountered. -->
## Installation logs
<!-- Please paste the **full** terminal output; we can only help to identify the issue
when we receive all required information. -->
<details><summary>Terminal output</summary>
```
PASTE HERE OR PROVIDE LINK TO https://pastebin.com/ OR SIMILAR
```
<!-- Insert screenshots here (only when absolutely necessary, we prefer copy/pasted output!) -->
</details>
## System specifications
<details><summary>System Details</summary>
- OS (with version, e.g., Windows 10 v2004 or macOS 10.15 (Catalina)):
- RAM:
- Python version (`python/py/python3 --version`):
- Installed modules (provide output from `pip list`):
```
PASTE HERE
```
</details>
<details><summary>LaTeX details</summary>
+ LaTeX distribution (e.g. TeX Live 2020):
+ Installed LaTeX packages:
<!-- output of `tlmgr list --only-installed` for TeX Live or a screenshot of the Packages page for MikTeX -->
</details>
## Additional comments
<!-- Add further context that you think might be relevant for this issue here. -->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/bugfix.md
================================================
<!-- Thank you for contributing to ManimCommunity!
Before filling in the details, ensure:
- The title of your PR gives a descriptive summary to end-users. Some examples:
- Fixed last animations not running to completion
- Added gradient support and documentation for SVG files
-->
## Changelog
<!-- Optional: more descriptive changelog entry than just the title for the upcoming
release. Write RST between the following start and end comments.-->
<!--changelog-start-->
<!--changelog-end-->
## Summary of Changes
## Checklist
- [ ] I have read the [Contributing Guidelines](https://docs.manim.community/en/latest/contributing.html)
- [ ] I have written a descriptive PR title (see top of PR template for examples)
- [ ] I have added a test case to prevent software regression
<!-- Do not modify the lines below. These are for the reviewers of your PR -->
## Reviewer Checklist
- [ ] The PR title is descriptive enough
- [ ] The PR is labeled appropriately
- [ ] Regression test(s) are implemented
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/documentation.md
================================================
<!-- Thank you for contributing to ManimCommunity!
Before filling in the details, ensure:
- The title of your PR gives a descriptive summary to end-users. Some examples:
- Fixed last animations not running to completion
- Added gradient support and documentation for SVG files
-->
## Summary of Changes
## Changelog
<!-- Optional: more descriptive changelog entry than just the title for the upcoming
release. Write RST between the following start and end comments.-->
<!--changelog-start-->
<!--changelog-end-->
## Checklist
- [ ] I have read the [Contributing Guidelines](https://docs.manim.community/en/latest/contributing.html)
- [ ] I have written a descriptive PR title (see top of PR template for examples)
- [ ] My new documentation builds, looks correctly formatted, and adds no additional build warnings
<!-- Do not modify the lines below. These are for the reviewers of your PR -->
## Reviewer Checklist
- [ ] The PR title is descriptive enough
- [ ] The PR is labeled appropriately
- [ ] Newly added documentation builds, looks correctly formatted, and adds no additional build warnings
================================================
FILE: .github/PULL_REQUEST_TEMPLATE/hackathon.md
================================================
Thanks for your contribution for the manim community hackathon!
Please make sure your pull request has a meaningful title.
E.g. "Example for the class Angle".
Details for the submissions can be found in the [discord announcement channel](https://discord.com/channels/581738731934056449/581739610154074112/846460718479966228
).
Docstrings can be created in the discord channel with the manimator like this:
```
!mdocstring
```
```python
class HelloWorld(Scene):
def construct(self):
self.add(Circle())
```
Copy+paste the output docstring to the right place in the source code.
If you need any help, do not hesitate to ask the hackathon-mentors in the discord channel.
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Thank you for contributing to Manim! Learn more about the process in our contributing guidelines: https://docs.manim.community/en/latest/contributing.html -->
## Overview: What does this pull request change?
## Motivation and Explanation: Why and how do your changes improve the library?
<!-- Optional for bugfixes, small enhancements, and documentation-related PRs. Otherwise, please give a short reasoning for your changes. -->
## Links to added or changed documentation pages
<!-- Please add links to the affected documentation pages (edit the description after opening the PR). The link to the documentation for your PR is https://manimce--####.org.readthedocs.build/en/####/, where #### represents the PR number. -->
## Further Information and Comments
<!-- If applicable, put further comments for the reviewers here. -->
<!-- Thank you again for contributing! Do not modify the lines below, they are for reviewers. -->
## Reviewer Checklist
- [ ] The PR title is descriptive enough for the changelog, and the PR is labeled correctly
- [ ] If applicable: newly added non-private functions and classes have a docstring including a short summary and a PARAMETERS section
- [ ] If applicable: newly added functions and classes are tested
================================================
FILE: .github/codeql.yml
================================================
query-filters:
- exclude:
id: py/init-calls-subclass
- exclude:
id: py/unexpected-raise-in-special-method
- exclude:
id: py/modification-of-locals
- exclude:
id: py/multiple-calls-to-init
- exclude:
id: py/missing-call-to-init
- exclude:
id: py/method-first-arg-is-not-self
- exclude:
id: py/cyclic-import
- exclude:
id: py/unsafe-cyclic-import
paths:
- manim
paths-ignore:
- tests/
- example_scenes/
================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
ignore:
- dependency-name: "*"
update-types:
- "version-update:semver-minor"
- "version-update:semver-patch"
================================================
FILE: .github/manimdependency.json
================================================
{
"windows": {
"tinytex": [
"standalone",
"preview",
"doublestroke",
"count1to",
"multitoc",
"prelim2e",
"ragged2e",
"everysel",
"setspace",
"rsfs",
"relsize",
"ragged2e",
"fundus-calligra",
"microtype",
"wasysym",
"physics",
"dvisvgm",
"jknapltx",
"wasy",
"cm-super",
"babel-english",
"gnu-freefont",
"mathastext",
"cbfonts-fd"
]
},
"macos": {
"tinytex": [
"standalone",
"preview",
"doublestroke",
"count1to",
"multitoc",
"prelim2e",
"ragged2e",
"everysel",
"setspace",
"rsfs",
"relsize",
"ragged2e",
"fundus-calligra",
"microtype",
"wasysym",
"physics",
"dvisvgm",
"jknapltx",
"wasy",
"cm-super",
"babel-english",
"gnu-freefont",
"mathastext",
"cbfonts-fd"
]
}
}
================================================
FILE: .github/release.yml
================================================
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
changelog:
exclude:
labels:
- duplicate/wontfix
- invalid
- question
- release
authors:
- dependabot[bot]
- pre-commit-ci[bot]
categories:
# High Impact
- title: "Breaking Changes 🚨"
labels:
- breaking changes
# Highlights
- title: "Highlights 🌟"
labels:
- highlight
# User-facing
- title: "New Features ✨"
labels:
- new feature
- title: "Enhancements 🚀"
labels:
- enhancement
- title: "Bug Fixes 🐛"
labels:
- pr:bugfix
- title: "Deprecations & Removals ⚠️"
labels:
- pr:deprecation
# Developer-facing
- title: "Documentation 📚"
labels:
- documentation
- title: "Testing 🧪"
labels:
- testing
- title: "Infrastructure & Build 🔨"
labels:
- infrastructure
- title: "Code Quality & Refactoring 🧹"
labels:
- maintenance
- refactor
- title: "Type Hints 📝"
labels:
- typehints
# Catch-all (must be last)
- title: "Other Changes"
labels:
- "*"
================================================
FILE: .github/scripts/ci_build_cairo.py
================================================
# Logic is as follows:
# 1. Download cairo source code: https://cairographics.org/releases/cairo-<version>.tar.xz
# 2. Verify the downloaded file using the sha256sums file: https://cairographics.org/releases/cairo-<version>.tar.xz.sha256sum
# 3. Extract the downloaded file.
# 4. Create a virtual environment and install meson and ninja.
# 5. Run meson build in the extracted directory. Also, set required prefix.
# 6. Run meson compile -C build.
# 7. Run meson install -C build.
import hashlib
import logging
import os
import subprocess
import sys
import tarfile
import tempfile
import urllib.request
from collections.abc import Generator
from contextlib import contextmanager
from pathlib import Path
from sys import stdout
CAIRO_VERSION = "1.18.0"
CAIRO_URL = f"https://cairographics.org/releases/cairo-{CAIRO_VERSION}.tar.xz"
CAIRO_SHA256_URL = f"{CAIRO_URL}.sha256sum"
VENV_NAME = "meson-venv"
BUILD_DIR = "build"
INSTALL_PREFIX = Path(__file__).parent.parent.parent / "third_party" / "cairo"
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
logger = logging.getLogger(__name__)
def is_ci():
return os.getenv("CI", None) is not None
def download_file(url, path):
logger.info(f"Downloading {url} to {path}")
block_size = 1024 * 1024
with urllib.request.urlopen(url) as response, open(path, "wb") as file:
while True:
data = response.read(block_size)
if not data:
break
file.write(data)
def verify_sha256sum(path, sha256sum):
with open(path, "rb") as file:
file_hash = hashlib.sha256(file.read()).hexdigest()
if file_hash != sha256sum:
raise Exception("SHA256SUM does not match")
def extract_tar_xz(path, directory):
with tarfile.open(path) as file:
file.extractall(directory)
def run_command(command, cwd=None, env=None):
process = subprocess.Popen(command, cwd=cwd, env=env)
process.communicate()
if process.returncode != 0:
raise Exception("Command failed")
@contextmanager
def gha_group(title: str) -> Generator:
if not is_ci():
yield
return
print(f"\n::group::{title}")
stdout.flush()
try:
yield
finally:
print("::endgroup::")
stdout.flush()
def set_env_var_gha(name: str, value: str) -> None:
if not is_ci():
return
env_file = os.getenv("GITHUB_ENV", None)
if env_file is None:
return
with open(env_file, "a") as file:
file.write(f"{name}={value}\n")
stdout.flush()
def get_ld_library_path(prefix: Path) -> str:
# given a prefix, the ld library path can be found at
# <prefix>/lib/* or sometimes just <prefix>/lib
# this function returns the path to the ld library path
# first, check if the ld library path exists at <prefix>/lib/*
ld_library_paths = list(prefix.glob("lib/*"))
if len(ld_library_paths) == 1:
return ld_library_paths[0].absolute().as_posix()
# if the ld library path does not exist at <prefix>/lib/*,
# return <prefix>/lib
ld_library_path = prefix / "lib"
if ld_library_path.exists():
return ld_library_path.absolute().as_posix()
return ""
def main():
if sys.platform == "win32":
logger.info("Skipping build on windows")
return
with tempfile.TemporaryDirectory() as tmpdir:
with gha_group("Downloading and Extracting Cairo"):
logger.info(f"Downloading cairo version {CAIRO_VERSION}")
download_file(CAIRO_URL, os.path.join(tmpdir, "cairo.tar.xz"))
logger.info("Downloading cairo sha256sum")
download_file(CAIRO_SHA256_URL, os.path.join(tmpdir, "cairo.sha256sum"))
logger.info("Verifying cairo sha256sum")
with open(os.path.join(tmpdir, "cairo.sha256sum")) as file:
sha256sum = file.read().split()[0]
verify_sha256sum(os.path.join(tmpdir, "cairo.tar.xz"), sha256sum)
logger.info("Extracting cairo")
extract_tar_xz(os.path.join(tmpdir, "cairo.tar.xz"), tmpdir)
with gha_group("Installing meson and ninja"):
logger.info("Creating virtual environment")
run_command([sys.executable, "-m", "venv", os.path.join(tmpdir, VENV_NAME)])
logger.info("Installing meson and ninja")
run_command(
[
os.path.join(tmpdir, VENV_NAME, "bin", "pip"),
"install",
"meson",
"ninja",
]
)
# Inherit the current environment so PKG_CONFIG_PATH, CFLAGS, LDFLAGS, etc. are preserved.
env_vars = os.environ.copy()
# Prepend the venv bin directory so meson/ninja from the venv are used.
env_vars["PATH"] = f"{os.path.join(tmpdir, VENV_NAME, 'bin')}{os.pathsep}{env_vars.get('PATH','')}"
# Ensure Homebrew-provided pkgconfig and include/lib paths are present on macOS ARM.
if sys.platform == "darwin":
try:
# Try to get specific prefix for lzo (safer for opt path), fall back to generic brew prefix.
brew_prefix = subprocess.check_output(["brew", "--prefix", "lzo"], text=True).strip()
except subprocess.CalledProcessError:
try:
brew_prefix = subprocess.check_output(["brew", "--prefix"], text=True).strip()
except Exception:
brew_prefix = None
if brew_prefix:
# pkg-config files can live in lib/pkgconfig or opt/<pkg>/lib/pkgconfig
pkgconfig_paths = [f"{brew_prefix}/lib/pkgconfig", f"{brew_prefix}/opt/lzo/lib/pkgconfig"]
# merge with any existing PKG_CONFIG_PATH
existing_pc = env_vars.get("PKG_CONFIG_PATH", "")
merged_pc = ":".join([p for p in pkgconfig_paths if p]) + (f":{existing_pc}" if existing_pc else "")
env_vars["PKG_CONFIG_PATH"] = merged_pc
# Ensure compiler & linker flags include brew include/lib
existing_cflags = env_vars.get("CFLAGS", "")
existing_ldflags = env_vars.get("LDFLAGS", "")
env_vars["CFLAGS"] = f"-I{brew_prefix}/include {existing_cflags}".strip()
env_vars["LDFLAGS"] = f"-L{brew_prefix}/lib {existing_ldflags}".strip()
# Debugging: log environment keys relevant to detection
# logger.info(f"env vars for meson: {env_vars}")
with gha_group("Building and Installing Cairo"):
logger.info("Running meson setup")
run_command(
[
os.path.join(tmpdir, VENV_NAME, "bin", "meson"),
"setup",
BUILD_DIR,
f"--prefix={INSTALL_PREFIX.absolute().as_posix()}",
"--buildtype=release",
"-Dtests=disabled",
],
cwd=os.path.join(tmpdir, f"cairo-{CAIRO_VERSION}"),
env=env_vars,
)
logger.info("Running meson compile")
run_command(
[
os.path.join(tmpdir, VENV_NAME, "bin", "meson"),
"compile",
"-C",
BUILD_DIR,
],
cwd=os.path.join(tmpdir, f"cairo-{CAIRO_VERSION}"),
env=env_vars,
)
logger.info("Running meson install")
run_command(
[
os.path.join(tmpdir, VENV_NAME, "bin", "meson"),
"install",
"-C",
BUILD_DIR,
],
cwd=os.path.join(tmpdir, f"cairo-{CAIRO_VERSION}"),
env=env_vars,
)
logger.info(f"Successfully built cairo and installed it to {INSTALL_PREFIX}")
if __name__ == "__main__":
if "--set-env-vars" in sys.argv:
with gha_group("Setting environment variables"):
# append the pkgconfig directory to PKG_CONFIG_PATH
set_env_var_gha(
"PKG_CONFIG_PATH",
f"{Path(get_ld_library_path(INSTALL_PREFIX), 'pkgconfig').as_posix()}{os.pathsep}"
f'{os.getenv("PKG_CONFIG_PATH", "")}',
)
set_env_var_gha(
"LD_LIBRARY_PATH",
f"{get_ld_library_path(INSTALL_PREFIX)}{os.pathsep}"
f'{os.getenv("LD_LIBRARY_PATH", "")}',
)
sys.exit(0)
main()
================================================
FILE: .github/workflows/cffconvert.yml
================================================
name: cffconvert
on:
push:
paths:
- CITATION.cff
jobs:
validate:
name: "validate"
runs-on: ubuntu-latest
steps:
- name: Check out a copy of the repository
uses: actions/checkout@v6
- name: Check whether the citation metadata from CITATION.cff is valid
uses: citation-file-format/cffconvert-github-action@2.0.0
with:
args: "--validate"
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
test:
runs-on: ${{ matrix.os }}
env:
DISPLAY: :0
PYTEST_ADDOPTS: "--color=yes" # colors in pytest
PYTHONIOENCODING: "utf8"
strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, macos-latest, windows-latest]
python: ["3.11", "3.12", "3.13", "3.14"]
include:
- os: macos-15-intel
python: "3.13"
steps:
- name: Checkout the repository
uses: actions/checkout@v6
- name: Setup Python ${{ matrix.python }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
enable-cache: true
- name: Setup cache variables
shell: bash
id: cache-vars
run: |
echo "date=$(/bin/date -u "+%m%w%Y")" >> $GITHUB_OUTPUT
- name: Install system dependencies (Linux)
if: runner.os == 'Linux'
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: python3-opengl libpango1.0-dev xvfb freeglut3-dev
version: 1.0
- name: Install Texlive (Linux)
if: runner.os == 'Linux'
uses: zauguin/install-texlive@v4
with:
packages: >
scheme-basic latex fontspec tipa calligra xcolor
standalone preview doublestroke setspace rsfs relsize
ragged2e fundus-calligra microtype wasysym physics dvisvgm jknapltx
wasy cm-super babel-english gnu-freefont mathastext cbfonts-fd xetex
- name: Start virtual display (Linux)
if: runner.os == 'Linux'
run: |
# start xvfb in background
sudo /usr/bin/Xvfb $DISPLAY -screen 0 1280x1024x24 &
- name: Setup Cairo Cache
uses: actions/cache@v5
id: cache-cairo
if: runner.os == 'Linux' || runner.os == 'macOS'
with:
path: ${{ github.workspace }}/third_party
key: ${{ runner.os }}-${{ runner.arch }}-dependencies-cairo-${{ hashFiles('.github/scripts/ci_build_cairo.py') }}
- name: Build and install Cairo (Linux and macOS)
if: (runner.os == 'Linux' || runner.os == 'macOS') && steps.cache-cairo.outputs.cache-hit != 'true'
run: python .github/scripts/ci_build_cairo.py
- name: Set env vars for Cairo (Linux and macOS)
if: runner.os == 'Linux' || runner.os == 'macOS'
run: python .github/scripts/ci_build_cairo.py --set-env-vars
- name: Setup macOS cache
uses: actions/cache@v5
id: cache-macos
if: runner.os == 'macOS'
with:
path: ${{ github.workspace }}/macos-cache
key: ${{ runner.os }}-dependencies-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.cache-vars.outputs.date }}-1
- name: Install system dependencies (MacOS)
if: runner.os == 'macOS' && steps.cache-macos.outputs.cache-hit != 'true'
run: |
tinyTexPackages=$(python -c "import json;print(' '.join(json.load(open('.github/manimdependency.json'))['macos']['tinytex']))")
IFS=' '
read -a ttp <<< "$tinyTexPackages"
oriPath=$PATH
sudo mkdir -p $PWD/macos-cache
echo "Install TinyTeX"
sudo curl -L -o "/tmp/TinyTeX.tgz" "https://github.com/yihui/tinytex-releases/releases/download/daily/TinyTeX-1.tgz"
sudo tar zxf "/tmp/TinyTeX.tgz" -C "$PWD/macos-cache"
export PATH="$PWD/macos-cache/TinyTeX/bin/universal-darwin:$PATH"
sudo tlmgr update --self
for i in "${ttp[@]}"; do
sudo tlmgr install "$i"
done
export PATH="$oriPath"
echo "Completed TinyTeX"
- name: Add macOS dependencies to PATH
if: runner.os == 'macOS'
shell: bash
run: |
echo "/Library/TeX/texbin" >> $GITHUB_PATH
echo "$PWD/macos-cache/TinyTeX/bin/universal-darwin" >> $GITHUB_PATH
- name: Setup Windows cache
id: cache-windows
if: runner.os == 'Windows'
uses: actions/cache@v5
with:
path: ${{ github.workspace }}\ManimCache
key: ${{ runner.os }}-dependencies-tinytex-${{ hashFiles('.github/manimdependency.json') }}-${{ steps.cache-vars.outputs.date }}-1
- uses: ssciwr/setup-mesa-dist-win@v2
- name: Install system dependencies (Windows)
if: runner.os == 'Windows' && steps.cache-windows.outputs.cache-hit != 'true'
run: |
$tinyTexPackages = $(python -c "import json;print(' '.join(json.load(open('.github/manimdependency.json'))['windows']['tinytex']))") -Split ' '
$OriPath = $env:PATH
echo "Install Tinytex"
Invoke-WebRequest "https://github.com/yihui/tinytex-releases/releases/download/daily/TinyTeX-1.zip" -OutFile "$($env:TMP)\TinyTex.zip"
Expand-Archive -LiteralPath "$($env:TMP)\TinyTex.zip" -DestinationPath "$($PWD)\ManimCache\LatexWindows"
$env:Path = "$($PWD)\ManimCache\LatexWindows\TinyTeX\bin\windows;$($env:PATH)"
tlmgr update --self
tlmgr install $tinyTexPackages
$env:PATH=$OriPath
echo "Completed Latex"
- name: Add Windows dependencies to PATH
if: runner.os == 'Windows'
run: |
$env:Path += ";" + "$($PWD)\ManimCache\LatexWindows\TinyTeX\bin\windows"
echo "$env:Path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install dependencies and manim
run: |
uv sync --all-extras --locked
- name: Run tests
run: |
uv run python -m pytest
- name: Run module doctests
run: |
uv run python -m pytest -v --cov-append --ignore-glob="*opengl*" --doctest-modules manim
- name: Run doctests in rst files
run: |
cd docs && uv run make doctest O=-tskip-manim
================================================
FILE: .github/workflows/codeql.yml
================================================
name: "CodeQL"
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: "21 16 * * 3"
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ python ]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Initialize CodeQL
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
config-file: ./.github/codeql.yml
queries: +security-and-quality
- name: Autobuild
uses: github/codeql-action/autobuild@v4
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{ matrix.language }}"
================================================
FILE: .github/workflows/dependent-issues.yml
================================================
name: Dependent Issues
on:
issues:
types:
- opened
- edited
- reopened
pull_request_target:
types:
- opened
- edited
- reopened
- synchronize
schedule:
- cron: '0 0 * * *' # schedule daily check
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: z0al/dependent-issues@v1
env:
# (Required) The token to use to make API calls to GitHub.
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# (Optional) The label to use to mark dependent issues
label: dependent
# (Optional) Enable checking for dependencies in issues. Enable by
# setting the value to "on". Default "off"
check_issues: on
# (Optional) A comma-separated list of keywords. Default
# "depends on, blocked by"
keywords: depends on, blocked by
================================================
FILE: .github/workflows/publish-docker.yml
================================================
name: Publish Docker Image
on:
push:
branches:
- main
release:
types: [released]
jobs:
docker-latest:
runs-on: ubuntu-latest
if: github.event_name != 'release'
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/arm64,linux/amd64
push: true
file: docker/Dockerfile
tags: |
manimcommunity/manim:latest
docker-release:
runs-on: ubuntu-latest
if: github.event_name == 'release'
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Get Version
id: create_release
shell: python
env:
tag_act: ${{ github.ref }}
run: |
import os
ref_tag = os.getenv('tag_act').split('/')[-1]
with open(os.getenv('GITHUB_OUTPUT'), 'w') as f:
print(f"tag_name={ref_tag}", file=f)
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/arm64,linux/amd64
push: true
file: docker/Dockerfile
tags: |
manimcommunity/manim:stable
manimcommunity/manim:latest
manimcommunity/manim:${{ steps.create_release.outputs.tag_name }}
================================================
FILE: .github/workflows/python-publish.yml
================================================
name: Publish Release
on:
release:
types: [released]
jobs:
release:
name: "Publish release"
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: sudo apt-get update && sudo apt-get install -y build-essential python3-dev libcairo2-dev libpango1.0-dev
- name: Set up Python 3.13
uses: actions/setup-python@v6
with:
python-version: 3.13
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Build and push release to PyPI
run: |
uv build
uv publish
- name: Store artifacts
uses: actions/upload-artifact@v6
with:
path: dist/*.tar.gz
name: manim.tar.gz
- name: Upload Release Asset
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG=${{ github.event.release.tag_name }}
gh release upload "$TAG" "dist/manim-${TAG#v}.tar.gz"
================================================
FILE: .github/workflows/release-publish-documentation.yml
================================================
name: Publish downloadable documentation
on:
release:
types: [released]
workflow_dispatch:
jobs:
build-and-publish-htmldocs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: 3.13
- name: Install uv
uses: astral-sh/setup-uv@v7
- name: Install system dependencies
run: |
sudo apt update && sudo apt install -y \
pkg-config libcairo-dev libpango1.0-dev wget fonts-roboto
wget -qO- "https://yihui.org/tinytex/install-bin-unix.sh" | sh
echo ${HOME}/.TinyTeX/bin/x86_64-linux >> $GITHUB_PATH
- name: Install LaTeX and Python dependencies
run: |
tlmgr update --self
tlmgr install \
babel-english ctex doublestroke dvisvgm frcursive fundus-calligra jknapltx \
mathastext microtype physics preview ragged2e relsize rsfs setspace standalone \
wasy wasysym
uv sync
- name: Build and package documentation
run: |
cd docs/
uv run make html
cd build/html/
tar -czvf ../html-docs.tar.gz *
- name: Store artifacts
uses: actions/upload-artifact@v6
with:
path: ${{ github.workspace }}/docs/build/html-docs.tar.gz
name: html-docs.tar.gz
- name: Install Dependency
run: pip install requests
- name: Get Upload URL
if: github.event == 'release'
id: create_release
shell: python
env:
access_token: ${{ secrets.GITHUB_TOKEN }}
tag_act: ${{ github.ref }}
run: |
import requests
import os
ref_tag = os.getenv('tag_act').split('/')[-1]
access_token = os.getenv('access_token')
headers = {
"Accept":"application/vnd.github.v3+json",
"Authorization": f"token {access_token}"
}
url = f"https://api.github.com/repos/ManimCommunity/manim/releases/tags/{ref_tag}"
c = requests.get(url,headers=headers)
upload_url=c.json()['upload_url']
with open(os.getenv('GITHUB_OUTPUT'), 'w') as f:
print(f"upload_url={upload_url}", file=f)
print(f"tag_name={ref_tag[1:]}", file=f)
- name: Upload Release Asset
if: github.event == 'release'
id: upload-release
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ github.workspace }}/docs/build/html-docs.tar.gz
asset_name: manim-htmldocs-${{ steps.create_release.outputs.tag_name }}.tar.gz
asset_content_type: application/gzip
================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
*.log
# Sphinx documentation
docs/_build/
docs/build/
docs/source/_autosummary/
docs/source/reference/
docs/source/_build/
docs/rendering_times.csv
#i18n
docs/i18n/gettext/.doctrees
docs/i18n/**/*.mo
docs/i18n/translatable.po
docs/i18n/untranslatable.po
# PyBuilder
target/
# Jupyter Notebook
jupyter/
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# PyCharm
/.idea/
# Celery stuff
celerybeat-schedule
celerybeat.pid
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
*.pyc
*.bak
.DS_Store
.floo
.flooignore
.vscode
.vs
*.xml
*.iml
media
.eggs/
build/
dist/
/media_dir.txt
# ^TODO: Remove the need for this with a proper config file
# Ignore the built dependencies
third_party/*
================================================
FILE: .pre-commit-config.yaml
================================================
default_stages: [pre-commit, pre-push]
fail_fast: false
exclude: ^(manim/grpc/gen/|docs/i18n/)
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-ast
name: Validate Python
- id: trailing-whitespace
- id: mixed-line-ending
- id: end-of-file-fixer
- id: check-toml
name: Validate pyproject.toml
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
- id: codespell
files: ^.*\.(py|md|rst)$
args: ["-L", "medias,nam"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.10
hooks:
- id: ruff
name: ruff lint
types: [python]
args: [--exit-non-zero-on-fix]
- id: ruff-format
types: [python]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.19.1
hooks:
- id: mypy
additional_dependencies:
[
types-backports,
types-decorator,
types-docutils,
types-requests,
types-setuptools,
]
files: ^manim/
================================================
FILE: .pylintrc
================================================
[MASTER]
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code.
extension-pkg-whitelist=
# Specify a score threshold to be exceeded before program exits with error.
fail-under=10.0
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS
# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the
# number of processors available to use.
jobs=1
# Control the amount of potential inferred values when inferring a single
# object. This can help the performance when dealing with large functions or
# complex, nested conditions.
limit-inference-results=100
# List of plugins (as comma separated values of python module names) to load,
# usually to register additional checkers.
load-plugins=
# Pickle collected data for later comparisons.
persistent=yes
# When enabled, pylint would attempt to guess common misconfiguration and emit
# user-friendly hints instead of false-positive error messages.
suggestion-mode=yes
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.
confidence=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once). You can also use "--disable=all" to
# disable everything first and then re-enable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use "--disable=all --enable=classes
# --disable=W".
disable=print-statement,
parameter-unpacking,
unpacking-in-except,
old-raise-syntax,
backtick,
long-suffix,
old-ne-operator,
old-octal-literal,
import-star-module-level,
non-ascii-bytes-literal,
raw-checker-failed,
bad-inline-option,
locally-disabled,
file-ignored,
suppressed-message,
useless-suppression,
deprecated-pragma,
use-symbolic-message-instead,
apply-builtin,
basestring-builtin,
buffer-builtin,
cmp-builtin,
coerce-builtin,
execfile-builtin,
file-builtin,
long-builtin,
raw_input-builtin,
reduce-builtin,
standarderror-builtin,
unicode-builtin,
xrange-builtin,
coerce-method,
delslice-method,
getslice-method,
setslice-method,
no-absolute-import,
old-division,
dict-iter-method,
dict-view-method,
next-method-called,
metaclass-assignment,
indexing-exception,
raising-string,
reload-builtin,
oct-method,
hex-method,
nonzero-method,
cmp-method,
input-builtin,
round-builtin,
intern-builtin,
unichr-builtin,
map-builtin-not-iterating,
zip-builtin-not-iterating,
range-builtin-not-iterating,
filter-builtin-not-iterating,
using-cmp-argument,
eq-without-hash,
div-method,
idiv-method,
rdiv-method,
exception-message-attribute,
invalid-str-codec,
sys-max-int,
bad-python3-import,
deprecated-string-function,
deprecated-str-translate-call,
deprecated-itertools-function,
deprecated-types-field,
next-method-defined,
dict-items-not-iterating,
dict-keys-not-iterating,
dict-values-not-iterating,
deprecated-operator-function,
deprecated-urllib-function,
xreadlines-attribute,
deprecated-sys-function,
exception-escape,
comprehension-escape,
fixme,
missing-function-docstring
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=c-extension-no-member
[REPORTS]
# Python expression which should return a score less than or equal to 10. You
# have access to the variables 'error', 'warning', 'refactor', and 'convention'
# which contain the number of messages in each category, as well as 'statement'
# which is the total number of statements analyzed. This score is used by the
# global evaluation report (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details.
#msg-template=
# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio). You can also give a reporter class, e.g.
# mypackage.mymodule.MyReporterClass.
output-format=text
# Tells whether to display a full report or only the messages.
reports=no
# Activate the evaluation score.
score=yes
[REFACTORING]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
# Complete name of functions that never returns. When checking for
# inconsistent-return-statements if a never returning function is called then
# it will be considered as an explicit return statement and no message will be
# printed.
never-returning-functions=sys.exit
[BASIC]
# Naming style matching correct argument names.
argument-naming-style=snake_case
# Regular expression matching correct argument names. Overrides argument-
# naming-style.
#argument-rgx=
# Naming style matching correct attribute names.
attr-naming-style=snake_case
# Regular expression matching correct attribute names. Overrides attr-naming-
# style.
#attr-rgx=
# Bad variable names which should always be refused, separated by a comma.
bad-names=foo,
bar,
baz,
toto,
tutu,
tata
# Bad variable names regexes, separated by a comma. If names match any regex,
# they will always be refused
bad-names-rgxs=
# Naming style matching correct class attribute names.
class-attribute-naming-style=any
# Regular expression matching correct class attribute names. Overrides class-
# attribute-naming-style.
#class-attribute-rgx=
# Naming style matching correct class names.
class-naming-style=PascalCase
# Regular expression matching correct class names. Overrides class-naming-
# style.
#class-rgx=
# Naming style matching correct constant names.
const-naming-style=UPPER_CASE
# Regular expression matching correct constant names. Overrides const-naming-
# style.
#const-rgx=
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
# Naming style matching correct function names.
function-naming-style=snake_case
# Regular expression matching correct function names. Overrides function-
# naming-style.
#function-rgx=
# Good variable names which should always be accepted, separated by a comma.
good-names=i,
j,
k,
e,
Run,
_
# Good variable names regexes, separated by a comma. If names match any regex,
# they will always be accepted
good-names-rgxs=
# Include a hint for the correct naming format with invalid-name.
include-naming-hint=no
# Naming style matching correct inline iteration names.
inlinevar-naming-style=any
# Regular expression matching correct inline iteration names. Overrides
# inlinevar-naming-style.
#inlinevar-rgx=
# Naming style matching correct method names.
method-naming-style=snake_case
# Regular expression matching correct method names. Overrides method-naming-
# style.
#method-rgx=
# Naming style matching correct module names.
module-naming-style=snake_case
# Regular expression matching correct module names. Overrides module-naming-
# style.
#module-rgx=
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
# These decorators are taken in consideration only for invalid-name.
property-classes=abc.abstractproperty
# Naming style matching correct variable names.
variable-naming-style=snake_case
# Regular expression matching correct variable names. Overrides variable-
# naming-style.
#variable-rgx=
[STRING]
# This flag controls whether inconsistent-quotes generates a warning when the
# character used as a quote delimiter is used inconsistently within a module.
check-quote-consistency=no
# This flag controls whether the implicit-str-concat should generate a warning
# on implicit string concatenation in sequences defined over several lines.
check-str-concat-over-line-jumps=no
[FORMAT]
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Maximum number of characters on a single line.
max-line-length=88
# Maximum number of lines in a module.
max-module-lines=1000
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
[SPELLING]
# Limits count of emitted suggestions for spelling mistakes.
max-spelling-suggestions=4
# Spelling dictionary name. Available dictionaries: none. To make it work,
# install the python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains the private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to the private dictionary (see the
# --spelling-private-dict-file option) instead of raising a message.
spelling-store-unknown-words=no
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# Tells whether to warn about missing members when the owner of the attribute
# is inferred to be None.
ignore-none=yes
# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis). It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes
# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1
# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1
# List of decorators that change the signature of a decorated function.
signature-mutators=
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid defining new builtins when possible.
additional-builtins=
# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,
_cb
# A regular expression matching the name of dummy variables (i.e. expected to
# not be used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
# Argument names that match this expression will be ignored. Default to name
# with leading underscore.
ignored-argument-names=_.*|^ignored_|^unused_
# Tells whether we should check for unused import in __init__ files.
init-import=no
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io
[SIMILARITIES]
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=no
# Minimum lines number of a similarity.
min-similarity-lines=4
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,
XXX,
TODO
# Regular expression of note tags to take in consideration.
#notes-rgx=
[LOGGING]
# The type of string formatting that logging methods do. `old` means using %
# formatting, `new` is for `{}` formatting.
logging-format-style=old
# Logging modules to check that the string format arguments are in logging
# function parameter format.
logging-modules=logging
[DESIGN]
# Maximum number of arguments for function / method.
max-args=5
# Maximum number of attributes for a class (see R0902).
max-attributes=7
# Maximum number of boolean expressions in an if statement (see R0916).
max-bool-expr=5
# Maximum number of branch for function / method body.
max-branches=12
# Maximum number of locals for function / method body.
max-locals=15
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of return / yield for function / method body.
max-returns=6
# Maximum number of statements in function / method body.
max-statements=50
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
[IMPORTS]
# List of modules that can be imported at any level, not just the top level
# one.
allow-any-import-level=
# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
# Deprecated modules which should not be used, separated by a comma.
deprecated-modules=optparse,tkinter.tix
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled).
ext-import-graph=
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled).
import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled).
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant
# Couples of modules and preferred modules, separated by a comma.
preferred-modules=
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,
__new__,
setUp,
__post_init__
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,
_fields,
_replace,
_source,
_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=cls
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "BaseException, Exception".
overgeneral-exceptions=BaseException,
Exception
================================================
FILE: .readthedocs.yml
================================================
version: 2
sphinx:
configuration: docs/source/conf.py
build:
os: ubuntu-22.04
tools:
python: "3.13"
apt_packages:
- libpango1.0-dev
- graphviz
python:
install:
- requirements: docs/rtd-requirements.txt
- requirements: docs/requirements.txt
- method: pip
path: .
================================================
FILE: CITATION.cff
================================================
# YAML 1.2
---
authors:
-
name: "The Manim Community Developers"
cff-version: "1.2.0"
date-released: 2026-02-27
license: MIT
message: "We acknowledge the importance of good software to support research, and we note that research becomes more valuable when it is communicated effectively. To demonstrate the value of Manim, we ask that you cite Manim in your work."
title: Manim – Mathematical Animation Framework
url: "https://www.manim.community/"
version: "v0.20.1"
...
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Code of Conduct
> TL;DR Be excellent to each other; we're a community after all. If you run into issues with others in our community, please [contact](https://www.manim.community/discord/) a Manim Community Dev, or Moderator.
## Purpose
The Manim Community includes members of varying skills, languages, personalities, cultural backgrounds, and experiences from around the globe. Through these differences, we continue to grow and collectively improve upon an open-source animation engine. When working in a community, it is important to remember that you are interacting with humans on the other end of your screen. This code of conduct will guide your interactions and keep Manim a positive environment for our developers, users, and fundamentally our growing community.
## Our Community
Members of Manim Community are respectful, open, and considerate. Behaviors that reinforce these values contribute to our positive environment, and include:
- **Being respectful.** Respectful of others, their positions, experiences, viewpoints, skills, commitments, time, and efforts.
- **Being open.** Open to collaboration, whether it's on problems, Pull Requests, issues, or otherwise.
- **Being considerate.** Considerate of their peers -- other Manim users and developers.
- **Focusing on what is best for the community.** We're respectful of the processes set forth in the community, and we work within them.
- **Showing empathy towards other community members.** We're attentive in our communications, whether in person or online, and we're tactful when approaching differing views.
- **Gracefully accepting constructive criticism.** When we disagree, we are courteous in raising our issues.
- **Using welcoming and inclusive language.** We're accepting of all who wish to take part in our activities, fostering an environment where anyone can participate and everyone can make a difference.
## Our Standards
Every member of our community has the right to have their identity respected. Manim Community is dedicated to providing a positive environment for everyone, regardless of age, gender identity and expression, sexual orientation, disability, physical appearance, body size, ethnicity, nationality, race, religion (or lack thereof), education, or socioeconomic status.
## Inappropriate Behavior
Examples of unacceptable behavior by participants include:
* Harassment of any participants in any form
* Deliberate intimidation, stalking, or following
* Logging or taking screenshots of online activity for harassment purposes
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Violent threats or language directed against another person
* Incitement of violence or harassment towards any individual, including encouraging a person to commit suicide or to engage in self-harm
* Creating additional online accounts in order to harass another person or circumvent a ban
* Sexual language and imagery in online communities or any conference venue, including talks
* Insults, put-downs, or jokes that are based upon stereotypes, that are exclusionary, or that hold others up for ridicule
* Excessive swearing
* Unwelcome sexual attention or advances
* Unwelcome physical contact, including simulated physical contact (eg, textual descriptions like "hug" or "backrub") without consent or after a request to stop
* Pattern of inappropriate social contact, such as requesting/assuming inappropriate levels of intimacy with others
* Sustained disruption of online community discussions, in-person presentations, or other in-person events
* Continued one-on-one communication after requests to cease
* Other conduct that is inappropriate for a professional audience including people of many different backgrounds
Community members asked to stop any inappropriate behavior are expected to comply immediately.
## Manim Community Online Spaces
This Code of Conduct applies to the following online spaces:
- The [ManimCommunity GitHub Organization](https://github.com/ManimCommunity) and all of its repositories
- The Manim [Discord](https://www.manim.community/discord/)
- The Manim [Reddit](https://www.reddit.com/r/manim/)
- The Manim [Twitter](https://twitter.com/manim\_community/)
This Code of Conduct applies to every member in official Manim Community online spaces, including:
- Moderators
- Maintainers
- Developers
- Reviewers
- Contributors
- Users
- All community members
## Consequences
If a member's behavior violates this code of conduct, the Manim Community Code of Conduct team may take any action they deem appropriate, including, but not limited to: warning the offender, temporary bans, deletion of offending messages, and expulsion from the community and its online spaces. The full list of consequences for inappropriate behavior is listed below in the Enforcement Procedures.
Thank you for helping make this a welcoming, friendly community for everyone.
## Contact Information
If you believe someone is violating the code of conduct, or have any other concerns, please contact a Manim Community Dev, or Moderator immediately. They can be reached on Manim's Community [Discord](https://www.manim.community/discord/).
<hr style="border:2px solid gray"> </hr>
<hr style="border:2px solid gray"> </hr>
## Enforcement Procedures
This document summarizes the procedures the Manim Community Code of Conduct team uses to enforce the Code of Conduct.
### Summary of processes
When the team receives a report of a possible Code of Conduct violation, it will:
1. Acknowledge the receipt of the report.
1. Evaluate conflicts of interest.
1. Call a meeting of code of conduct team members without a conflict of interest.
1. Evaluate the reported incident.
1. Propose a behavioral modification plan.
1. Propose consequences for the reported behavior.
1. Vote on behavioral modification plan and consequences for the reported person.
1. Contact Manim Community moderators to approve the behavioral modification plan and consequences.
1. Follow up with the reported person.
1. Decide further responses.
1. Follow up with the reporter.
### Acknowledge the report
Reporters should receive an acknowledgment of the receipt of their report within 48 hours.
### Conflict of interest policy
Examples of conflicts of interest include:
* You have a romantic or platonic relationship with either the reporter or the reported person. It's fine to participate if they are an acquaintance.
* The reporter or reported person is someone you work closely with. This could be someone on your team or someone who works on the same project as you.
* The reporter or reported person is a maintainer who regularly reviews your contributions
* The reporter or reported person is your metamour.
* The reporter or reported person is your family member
Committee members do not need to state why they have a conflict of interest, only that one exists. Other team members should not ask why the person has a conflict of interest.
Anyone who has a conflict of interest will remove themselves from the discussion of the incident, and recluse themselves from voting on a response to the report.
### Evaluating a report
#### Jurisdiction
* *Is this a Code of Conduct violation?* Is this behavior on our list of inappropriate behavior? Is it borderline inappropriate behavior? Does it violate our community norms?
* *Did this occur in a space that is within our Code of Conduct's scope?* If the incident occurred outside the community, but a community member's mental health or physical safety may be negatively impacted if no action is taken, the incident may be in scope. Private conversations in community spaces are also in scope.
#### Impact
* *Did this incident occur in a private conversation or a public space?* Incidents that all community members can see will have a more negative impact.
* *Does this behavior negatively impact a marginalized group in our community?* Is the reporter a person from a marginalized group in our community? How is the reporter being negatively impacted by the reported person's behavior? Are members of the marginalized group likely to disengage with the community if no action was taken on this report?
* *Does this incident involve a community leader?* Community members often look up to community leaders to set the standard of acceptable behavior
#### Risk
* *Does this incident include sexual harassment?*
* *Does this pose a safety risk?* Does the behavior put a person's physical safety at risk? Will this incident severely negatively impact someone's mental health?
* *Is there a risk of this behavior being repeated?* Does the reported person understand why their behavior was inappropriate? Is there an established pattern of behavior from past reports?
Reports which involve higher risk or higher impact may face more severe consequences than reports which involve lower risk or lower impact.
### Propose consequences
What follows are examples of possible consequences of an incident report. This list of consequences is not exhaustive, and the Manim Community Code of Conduct team reserves the right to take any action it deems necessary.
Possible private responses to an incident include:
* Nothing, if the behavior was determined to not be a Code of Conduct violation
* A warning
* A final warning
* Temporarily removing the reported person from the community's online space(s)
* Permanently removing the reported person from the community's online space(s)
* Publishing an account of the incident
### Team vote
Some team members may have a conflict of interest and may be excluded from discussions of a particular incident report. Excluding those members, decisions on the behavioral modification plans and consequences will be determined by a two-thirds majority vote of the Manim Community Code of Conduct team.
### Moderators approval
Once the team has approved the behavioral modification plans and consequences, they will communicate the recommended response to the Manim Community moderators. The team should not state who reported this incident. They should attempt to anonymize any identifying information from the report.
Moderators are required to respond with whether they accept the recommended response to the report. If they disagree with the recommended response, they should provide a detailed response or additional context as to why they disagree. Moderators are encouraged to respond within a week.
In cases where the moderators disagree on the suggested resolution for a report, the Manim Community Code of Conduct team may choose to notify the Manim Community Moderators.
### Follow up with the reported person
The Manim Community Code of Conduct team will work with Manim Community moderators to draft a response to the reported person. The response should contain:
* A description of the person's behavior in neutral language
* The negative impact of that behavior
* A concrete behavioral modification plan
* Any consequences of their behavior
The team should not state who reported this incident. They should attempt to anonymize any identifying information from the report. The reported person should be discouraged from contacting the reporter to discuss the report. If they wish to apologize to the reporter, the team can accept the apology on behalf of the reporter.
### Decide further responses
If the reported person provides additional context, the Manim Community Code of Conduct team may need to re-evaluate the behavioral modification plan and consequences.
### Follow up with the reporter
A person who makes a report should receive a follow-up response stating what action was taken in response to the report. If the team decided no response was needed, they should provide an explanation why it was not a Code of Conduct violation. Reports that are not made in good faith (such as "reverse sexism" or "reverse racism") may receive no response.
The follow-up should be sent no later than one week after the receipt of the report. If deliberation or follow-up with the reported person takes longer than one week, the team should send a status update to the reporter.
### Changes to Code of Conduct
When discussing a change to the Manim Community code of conduct or enforcement procedures, the Manim Community Code of Conduct team will follow this decision-making process:
* **Brainstorm options.** Team members should discuss any relevant context and brainstorm a set of possible options. It is important to provide constructive feedback without getting side-tracked from the main question.
* **Vote.** Proposed changes to the code of conduct will be decided by a two-thirds majority of all voting members of the Code of Conduct team. Team members are listed in the charter. Currently active voting members are listed in the following section.
* **Board Vote.** Once a working draft is in place for the Code of Conduct and procedures, the Code of Conduct team shall provide the Manim Community Moderators with a draft of the changes. The Manim Community Moderators will vote on the changes at a board meeting.
### Current list of voting members
- All available Community Developers (i.e. those with "write" permissions, or above, on the Manim Community GitHub organization).
## License
This Code of Conduct is licensed under the [Creative Commons Attribution-ShareAlike 3.0 Unported License](https://creativecommons.org/licenses/by-sa/3.0/).
## Attributions
This Code of Conduct was forked from the code of conduct from the [Python Software Foundation](https://www.python.org/psf/conduct/) and adapted by Manim Community.
================================================
FILE: CONTRIBUTING.md
================================================
# Thanks for your interest in contributing!
Please read our contributing guidelines which are hosted at https://docs.manim.community/en/latest/contributing.html
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2018 3Blue1Brown LLC
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: LICENSE.community
================================================
MIT License
Copyright (c) 2024, the Manim Community Developers
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<p align="center">
<a href="https://www.manim.community/"><img src="https://raw.githubusercontent.com/ManimCommunity/manim/main/logo/cropped.png" alt="Manim Community logo"></a>
<br />
<br />
<a href="https://pypi.org/project/manim/"><img src="https://img.shields.io/pypi/v/manim.svg?style=flat&logo=pypi" alt="PyPI Latest Release"></a>
<a href="https://hub.docker.com/r/manimcommunity/manim"><img src="https://img.shields.io/docker/v/manimcommunity/manim?color=%23099cec&label=docker%20image&logo=docker" alt="Docker image"> </a>
<a href="https://mybinder.org/v2/gh/ManimCommunity/jupyter_examples/HEAD?filepath=basic_example_scenes.ipynb"><img src="https://mybinder.org/badge_logo.svg" alt="Launch Binder"></a>
<a href="http://choosealicense.com/licenses/mit/"><img src="https://img.shields.io/badge/license-MIT-red.svg?style=flat" alt="MIT License"></a>
<a href="https://www.reddit.com/r/manim/"><img src="https://img.shields.io/reddit/subreddit-subscribers/manim.svg?color=orange&label=reddit&logo=reddit" alt="Reddit" href=></a>
<a href="https://twitter.com/manimcommunity/"><img src="https://img.shields.io/twitter/url/https/twitter.com/cloudposse.svg?style=social&label=Follow%20%40manimcommunity" alt="Twitter">
<a href="https://manim.community/discord/"><img src="https://img.shields.io/discord/581738731934056449.svg?label=discord&color=yellow&logo=discord" alt="Discord"></a>
<a href="https://docs.manim.community/"><img src="https://readthedocs.org/projects/manimce/badge/?version=latest" alt="Documentation Status"></a>
<img src="https://github.com/ManimCommunity/manim/workflows/CI/badge.svg" alt="CI">
<br />
<br />
<i>An animation engine for explanatory math videos</i>
</p>
<hr />
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]
> The community edition of Manim (ManimCE) is a version maintained and developed by the community. It was forked from 3b1b/manim, a tool originally created and open-sourced by Grant Sanderson, also creator of the 3Blue1Brown educational math videos. While Grant Sanderson continues to maintain his own repository, we recommend this version for its continued development, improved features, enhanced documentation, and more active community-driven maintenance. If you would like to study how Grant makes his videos, head over to his repository ([3b1b/manim](https://github.com/3b1b/manim)).
## Table of Contents:
- [Installation](#installation)
- [Usage](#usage)
- [Documentation](#documentation)
- [Docker](#docker)
- [Help with Manim](#help-with-manim)
- [Contributing](#contributing)
- [License](#license)
## Installation
> [!CAUTION]
> 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
[in our online Jupyter environment](https://try.manim.community/).
For local installation, please visit the [Documentation](https://docs.manim.community/en/stable/installation.html)
and follow the appropriate instructions for your operating system.
## Usage
Manim is an extremely versatile package. The following is an example `Scene` you can construct:
```python
from manim import *
class SquareToCircle(Scene):
def construct(self):
circle = Circle()
square = Square()
square.flip(RIGHT)
square.rotate(-3 * TAU / 8)
circle.set_fill(PINK, opacity=0.5)
self.play(Create(square))
self.play(Transform(square, circle))
self.play(FadeOut(square))
```
In order to view the output of this scene, save the code in a file called `example.py`. Then, run the following in a terminal window:
```sh
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
[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
[corresponding documentation](https://docs.manim.community/en/stable/reference/manim.utils.ipython_magic.ManimMagic.html) for some guidance and
[try it out online](https://mybinder.org/v2/gh/ManimCommunity/jupyter_examples/HEAD?filepath=basic_example_scenes.ipynb).
## Command line arguments
The general usage of Manim is as follows:

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.
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.
For a thorough list of command line arguments, visit the [documentation](https://docs.manim.community/en/stable/guides/configuration.html).
## Documentation
Documentation is in progress at [ReadTheDocs](https://docs.manim.community/).
## Docker
The community also maintains a docker image (`manimcommunity/manim`), which can be found [on DockerHub](https://hub.docker.com/r/manimcommunity/manim).
Instructions on how to install and use it can be found in our [documentation](https://docs.manim.community/en/stable/installation/docker.html).
## Help with Manim
If you need help installing or using Manim, feel free to reach out to our [Discord
Server](https://www.manim.community/discord/) or [Reddit Community](https://www.reddit.com/r/manim). If you would like to submit a bug report or feature request, please open an issue.
## Contributing
Contributions to Manim are always welcome. In particular, there is a dire need for tests and documentation. For contribution guidelines, please see the [documentation](https://docs.manim.community/en/stable/contributing.html).
However, please note that Manim is currently undergoing a major refactor. In general,
contributions implementing new features will not be accepted in this period.
The contribution guide may become outdated quickly; we highly recommend joining our
[Discord server](https://www.manim.community/discord/) to discuss any potential
contributions and keep up to date with the latest developments.
Most developers on the project use `uv` for management. You'll want to have uv installed and available in your environment.
Learn more about `uv` at its [documentation](https://docs.astral.sh/uv/) and find out how to install manim with uv at the [manim dev-installation guide](https://docs.manim.community/en/latest/contributing/development.html) in the manim documentation.
## How to Cite Manim
We acknowledge the importance of good software to support research, and we note
that research becomes more valuable when it is communicated effectively. To
demonstrate the value of Manim, we ask that you cite Manim in your work.
Currently, the best way to cite Manim is to go to our
[repository page](https://github.com/ManimCommunity/manim) (if you aren't already) and
click the "cite this repository" button on the right sidebar. This will generate
a citation in your preferred format, and will also integrate well with citation managers.
## Code of Conduct
Our full code of conduct, and how we enforce it, can be read on [our website](https://docs.manim.community/en/stable/conduct.html).
## License
The software is double-licensed under the MIT license, with copyright by 3blue1brown LLC (see LICENSE), and copyright by Manim Community Developers (see LICENSE.community).
================================================
FILE: crowdin.yml
================================================
files:
- source: /docs/i18n/gettext/**/*.pot
translation: /docs/i18n/%two_letters_code%/LC_MESSAGES/**/%file_name%.po
================================================
FILE: docker/Dockerfile
================================================
# ── Stage 1: builder ─────────────────────────────────────────────────────────
FROM python:3.14-slim AS builder
RUN apt-get update -qq \
&& apt-get install --no-install-recommends -y \
build-essential \
gcc \
cmake \
make \
pkg-config \
wget \
libcairo2-dev \
libffi-dev \
libpango1.0-dev \
libegl-dev \
&& rm -rf /var/lib/apt/lists/*
# Setup a minimal TeX Live installation (no ctex: drops ~100 MB of CJK fonts/packages)
COPY docker/texlive-profile.txt /tmp/
ENV PATH=/usr/local/texlive/bin/armhf-linux:/usr/local/texlive/bin/aarch64-linux:/usr/local/texlive/bin/x86_64-linux:$PATH
RUN wget -O /tmp/install-tl-unx.tar.gz http://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz \
&& mkdir /tmp/install-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 count1to doublestroke dvisvgm everysel \
fontspec frcursive fundus-calligra gnu-freefont jknapltx latex-bin \
mathastext microtype multitoc physics prelim2e preview ragged2e relsize rsfs \
setspace standalone tipa wasy wasysym xcolor xetex xkeyval \
&& rm -rf /tmp/install-tl /tmp/install-tl-unx.tar.gz
# Install manim into an isolated virtualenv
ENV VIRTUAL_ENV=/opt/venv
RUN python -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
COPY . /opt/manim
WORKDIR /opt/manim
RUN pip install --no-cache-dir .[jupyterlab]
# ── Stage 2: runtime ─────────────────────────────────────────────────────────
FROM python:3.14-slim
# Runtime libs only:
# - no ffmpeg: PyAV (av package) bundles its own ffmpeg libraries in av.libs/
# - OpenGL: keep EGL for headless rendering and libGL as required by moderngl/glcontext
# - fonts-noto-core instead of fonts-noto (drops CJK noto fonts)
RUN apt-get update -qq \
&& apt-get install --no-install-recommends -y \
libcairo2 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libpangoft2-1.0-0 \
libffi8 \
libegl1 \
libgl1 \
ghostscript \
fonts-noto-core \
fontconfig \
&& rm -rf /var/lib/apt/lists/*
RUN fc-cache -fv
# Copy TeX Live from builder
ENV PATH=/usr/local/texlive/bin/armhf-linux:/usr/local/texlive/bin/aarch64-linux:/usr/local/texlive/bin/x86_64-linux:$PATH
COPY --from=builder /usr/local/texlive /usr/local/texlive
# Copy the pre-built virtualenv from builder
ENV VIRTUAL_ENV=/opt/venv
COPY --from=builder /opt/venv /opt/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ARG NB_USER=manimuser
ARG NB_UID=1000
ENV USER=${NB_USER}
ENV NB_UID=${NB_UID}
ENV HOME=/manim
RUN adduser --disabled-password \
--gecos "Default user" \
--uid ${NB_UID} \
${NB_USER}
WORKDIR ${HOME}
RUN chown -R ${NB_USER}:${NB_USER} ${HOME} && chmod 777 ${HOME}
USER ${NB_USER}
CMD ["/bin/bash"]
================================================
FILE: docker/readme.md
================================================
See the [main README](https://github.com/ManimCommunity/manim/blob/main/README.md) for some instructions on how to use this image.
# Building the image
The docker image corresponding to the checked out version of the git repository
can be built by running
```
docker build -t manimcommunity/manim:TAG -f docker/Dockerfile .
```
from the root directory of the repository.
Multi-platform builds are possible by running
```
docker buildx build --push --platform linux/arm64/v8,linux/amd64 --tag manimcommunity/manim:TAG -f docker/Dockerfile .
```
from the root directory of the repository.
# Runtime notes
- The image is built via a multi-stage Dockerfile (build dependencies are not
carried into the runtime stage).
- The image does not include the `ffmpeg` CLI binary.
- The default TeX installation is minimal and does not include `ctex`.
- Headless OpenGL rendering relies on EGL/GL runtime libraries available in the
image.
================================================
FILE: docker/texlive-profile.txt
================================================
selected_scheme scheme-minimal
TEXDIR /usr/local/texlive
TEXMFCONFIG ~/.texlive/texmf-config
TEXMFHOME ~/texmf
TEXMFLOCAL /usr/local/texlive/texmf-local
TEXMFSYSCONFIG /usr/local/texlive/texmf-config
TEXMFSYSVAR /usr/local/texlive/texmf-var
TEXMFVAR ~/.texlive/texmf-var
option_doc 0
option_src 0
================================================
FILE: docs/Makefile
================================================
# Minimal makefile for Sphinx documentation
#
# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
# Path base is the source directory
SOURCEDIR = .
BUILDDIR = ../build
# Put it first so that "make" without argument is like "make help".
help:
@(cd source; $(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O))
.PHONY: help Makefile i18n
# All the code is executed as if everything was launched in one shell.
.ONESHELL:
# Like make clean but also remove files generated by autosummary and
# rendered videos.
cleanall: clean
@rm source/reference/*
@rm -rf source/media
@rm -f rendering_times.csv
i18n:
@(cd source; $(SPHINXBUILD) -M gettext "$(SOURCEDIR)" ../i18n/ -t skip-manim $(SPHINXOPTS) $(O);cd ../i18n;bash stripUntranslatable.sh)
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@(cd source; $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O))
================================================
FILE: docs/html
================================================
================================================
FILE: docs/i18n/fr/LC_MESSAGES/index.po
================================================
msgid ""
msgstr ""
"Project-Id-Version: 031f65d9b7a2e83b265c23f1c4450271\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: 031f65d9b7a2e83b265c23f1c4450271\n"
"X-Crowdin-Project-ID: 1\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: /[ManimCommunity.manim] main/docs/i18n/gettext/index.pot\n"
"X-Crowdin-File-ID: 5163\n"
"Language-Team: French\n"
"Language: fr_FR\n"
"PO-Revision-Date: 2021-11-06 12:29\n"
#: ../../source/index.rst:7
msgid "Manim Community Overview"
msgstr "Manim communauté - Vue d'ensemble"
#: ../../source/index.rst:9
msgid "Animating technical concepts is traditionally pretty tedious since it can be difficult to make the animations precise enough to convey them accurately. ``Manim`` uses Python to generate animations programmatically, making it possible to specify exactly how each one should run."
msgstr "Animer des concepts techniques est traditionellement plutôt compliqué puisqu'il est difficile de rendre les animations assez precises pour bien représenter ces concepts. ``Manim`` utilise Python pour génerer des animation en programmant, permettant de préciser de manière exacte leur execution."
#: ../../source/index.rst:14
msgid "This project is still very much a work in progress, but we hope that the information here will make it easier for newcomers to get started using ``Manim``."
msgstr "Ce projet est encore en grande partie en cours de développement, mais nous éspérons que les informations fournies ici permettront aux nouveaux venus de mieux commencer à utiliser ``Manim``."
#: ../../source/index.rst:20
msgid "All content of the docs is licensed under the MIT license. Especially for the examples you encounter: Feel free to use this code in your own projects!"
msgstr "Le contenu de ces documentations est distribué sous licence MIT. C'est aussi vrai pour les exemples présentés, vous pouvez utilisez les codes librement dans vos projets !"
#: ../../source/index.rst:23
msgid "We are curious to see the awesome projects you build using this library, feel free to share your projects with us `on Twitter <https://twitter.com/manim_community>`_, `Reddit <https://www.reddit.com/r/manim/>`_, or via `Discord <https://www.manim.community/discord/>`_."
msgstr "Nous sommes curieux de voir les super projets que vous construisez avec cette librairie, partagez-les donc avec nous `sur Twitter <https://twitter.com/manim_community>`_, `Reddit <https://www.reddit.com/r/manim/>`_, or sur `Discord <https://www.manim.community/discord/>`_. "
#: ../../source/index.rst:27
msgid "In case you publish your work made with Manim, we would appreciate if you add a link to `our homepage <https://www.manim.community>`_ or `our GitHub repository <https://github.com/ManimCommunity/manim>`_. If you use Manim in a scientific context, instructions on how to cite a particular release can be found `in our README <https://github.com/ManimCommunity/manim/blob/main/README.md>`_."
msgstr "Si vous publiez votre travail fait avec Manim, nous apprécierions si vous ajoutiez un lien vers `notre site principal <https://www.manim.community>`_ ou vers `notre repo GitHub <https://github.com/ManimCommunity/manim>`_. Si vous utilisez Manim dans un contexte scientifique, des instructions afin de citer une certaine version de Manim sont disponibles (en anglais) `dans notre fichier README <https://github.com/ManimCommunity/manim/blob/main/README.md>`_."
#: ../../source/index.rst:36
msgid "As a quick reference, here are some often used modules, classes and methods:"
msgstr "Comme rapide indications, voici certains des modules, classes et méthodes les plus utilisées:"
#: ../../source/index.rst:38
msgid "Modules: :mod:`~.moving_camera_scene`, :mod:`~.tex_mobject`, :mod:`~.geometry`,"
msgstr "Modules: :mod:`~.moving_camera_scene`, :mod:`~.tex_mobject`, :mod:`~.geometry`,"
#: ../../source/index.rst:43
msgid "Classes: :class:`~.Mobject` , :class:`~.VMobject`, :class:`~.ValueTracker`, :class:`~.MathTex`, :class:`~.Angle`, :class:`~.Tex`, :class:`~.Text`,"
msgstr "Classes: :class:`~.Mobject` , :class:`~.VMobject`, :class:`~.ValueTracker`, :class:`~.MathTex`, :class:`~.Angle`, :class:`~.Tex`, :class:`~.Text`,"
================================================
FILE: docs/i18n/fr/LC_MESSAGES/installation.po
================================================
msgid ""
msgstr ""
"Project-Id-Version: 031f65d9b7a2e83b265c23f1c4450271\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Crowdin-Project: 031f65d9b7a2e83b265c23f1c4450271\n"
"X-Crowdin-Project-ID: 1\n"
"X-Crowdin-Language: fr\n"
"X-Crowdin-File: /[ManimCommunity.manim] main/docs/i18n/gettext/installation.pot\n"
"X-Crowdin-File-ID: 5165\n"
"Language-Team: French\n"
"Language: fr_FR\n"
"PO-Revision-Date: 2021-11-06 12:29\n"
#: ../../source/installation.rst:2
msgid "Installation"
msgstr "Installation"
#: ../../source/installation.rst:4
msgid "Depending on your use case, different installation options are recommended: if you just want to play around with Manim for a bit, interactive in-browser notebooks are a really simple way of exploring the library as they require no local installation. Head over to https://try.manim.community to give our interactive tutorial a try."
msgstr "Suivant comment vous souhaitez utiliser Manim, différentes options d'installation s'offrent à vous : Si vous voulez simplement vous amuser avec, les bloc-notes interactifs sur votre navigateur sont un moyen simple d'explorer les possibilités offertes par la bibliothèque, puisqu'ils ne nécessitent pas d'installer quoi que ce soit sur votre ordinateur. Allez donc voir à l'adresse https://try.manim.community pour tester notre tutoriel interactif."
#: ../../source/installation.rst:10
msgid "Otherwise, if you intend to use Manim to work on an animation project, we recommend installing the library locally (either to your system's Python, or via Docker)."
msgstr "Sinon, si vous souhaitez utiliser Manim pour travailler sur un projet d'animation, il vaut mieux installer la bibliothèque sur votre ordinateur (sur le Python de votre sytème, ou via Docker)."
#: ../../source/installation.rst:16
msgid "Note that there are several different versions of Manim. The instructions on this website are **only** for the *community edition*. Find out more about the :doc:`differences between Manim versions <installation/versions>` if you are unsure which version you should install."
msgstr "Prenez garde, il y a plusieurs différentes versions de Manim. Les instructions sur ce site sont **seulement** pour la *version communautaire* (*community edition*). Découvrez en plus sur les :doc:`différences entre les versions de manim <installation/versions>` si vous n'êtes pas sûrs de quelle version installer."
#: ../../source/installation.rst:22
msgid ":ref:`Installing Manim to your system's Python <local-installation>`"
msgstr ":ref:`Installer Manim sur le Python de votre système <local-installation>`"
#: ../../source/installation.rst:23
msgid ":ref:`Using Manim via Docker <docker-installation>`"
msgstr ":ref:`Utiliser Manim via Docker <docker-installation>`"
#: ../../source/installation.rst:24
msgid ":ref:`Interactive Jupyter notebooks via Binder / Google Colab <interactive-online>`"
msgstr ":ref:`Blocs-notes interactifs Jupyter via Binder / Google Colab <interactive-online>`"
#: ../../source/installation.rst:31
msgid "Installing Manim locally"
msgstr "Installation de Manim sur l'ordinateur"
#: ../../source/installation.rst:33
msgid "Manim is a Python library, and it can be `installed via pip <https://pypi.org/project/manim/>`__. However, in order for Manim to work properly, some additional system dependencies need to be installed first. The following pages have operating system specific instructions for you to follow."
msgstr "Manim est une bibliothèque Python, et peut donc être `installée avec pip <https://pypi.org/project/manim/>`__. Par contre, pour que Manim fonctionne correctement, quelques dépendances doivent être installées avant. Les pages suivantes offrent les instructions à suivre selon votre système d'exploitation."
#: ../../source/installation.rst:41
msgid "Depending on your particular setup, the installation process might be slightly different. Make sure that you have tried to follow the steps on the following pages carefully, but in case you hit a wall we are happy to help: either `join our Discord <https://www.manim.community/discord/>`__, or start a new Discussion `directly on GitHub <https://github.com/ManimCommunity/manim/discussions>`__."
msgstr "Suivant la configuration particulière de votre ordinateur, le processus d'installation peut varier légèrement. Assurez-vous d'avoir essayé de suivre avec attention les étapes sur les pages ci-dessous, mais si vous faites face à un problème, nous serons heureux de vous aider : vous pouvez `rejoindre notre serveur Discord <https://www.manim.community/discord/>`__, ou vous pouvez lancer une nouvelle Discussion `directement sur GitHub <https://github.com/ManimCommunity/manim/discussions>`__."
#: ../../source/installation.rst:57
msgid "Once Manim is installed locally, you can proceed to our :doc:`quickstart guide <tutorials/quickstart>` which walks you through rendering a first simple scene."
msgstr "Une fois que Manim est installé sur votre ordinateur, vous pouvez allez lire notre :doc:`guide de démarage rapide <tutorials/quickstart>` qui va vous apprendre à rendre une première scène simpliste."
#: ../../source/installation.rst:61
msgid "As mentioned above, do not worry if there are errors or other problems: consult our :doc:`troubleshooting guide <installation/troubleshooting>` for help, or get in touch with the community via `GitHub discussions <https://github.com/ManimCommunity/manim/discussions>`__ or `Discord <https://www.manim.community/discord/>`__."
msgstr "Comme indiqué ci-dessus, ne vous inquétez pas si vous rencontrez des erreurs ou autres problèmes : consultez notre :doc:`guide de dépannage <installation/troubleshooting>` pour obtenir de l'aide, sinon, prenez contact avec la communauté via `les discussions GitHub <https://github.com/ManimCommunity/manim/discussions>`__ ou via `Discord <https://www.manim.community/discord/>`__."
#: ../../source/installation.rst:73
msgid "Using Manim via Docker"
msgstr "Utiliser Manim via Docker"
#: ../../source/installation.rst:75
msgid "`Docker <https://www.docker.com>`__ is a virtualization tool that allows the distribution of encapsulated software environments (containers)."
msgstr "`Docker <https://www.docker.com>`__ est un outil de virtualisation qui permet la distribution de logiciels en environnement confiné (*containers*)."
#: ../../source/installation.rst:78
msgid "The following pages contain more information about the docker image maintained by the community, ``manimcommunity/manim``:"
msgstr "Les pages suivantes contiennent plus d'informations à propos de l'image docker maintenue par la communauté, ``manimcommunity/manim`` :"
#: ../../source/installation.rst:89
msgid "Interactive Jupyter notebooks for your browser"
msgstr "Bloc-notes interactifs Jupyter sur votre navigateur"
#: ../../source/installation.rst:91
msgid "Manim ships with a built-in ``%%manim`` IPython magic command designed for the use within `Jupyter notebooks <https://jupyter.org>`__. Our interactive tutorial over at https://try.manim.community illustrates how Manim can be used from within a Jupyter notebook."
msgstr "Le projet Manim contient une commande IPython ``%%manim`` prévue pour être utilisée dans des `blocs-notes Jupyter <https://jupyter.org>`__. Notre tutoriel interactif à l'adresse https://try.manim.community illustre la façon d'utiliser Manim dans un bloc-notes Jupyter."
#: ../../source/installation.rst:96
msgid "The following pages explain how you can setup interactive environments like that yourself:"
msgstr "Les pages suivantes expliquent comment mettre en place de tels environnements interactifs vous-même :"
#: ../../source/installation.rst:105
msgid "Installation for developers"
msgstr "Installation pour les développeurs"
================================================
FILE: docs/i18n/gettext/changelog/0.1.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.1.0-changelog.rst:3
msgid "v0.1.0"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:5
msgid "October 21, 2020"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:7
msgid "This is the first release of manimce after forking from 3b1b/manim. As such, developers have focused on cleaning up and refactoring the codebase while still maintaining backwards compatibility wherever possible."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:13
msgid "New Features"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:16
msgid "Command line"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:18
msgid "Output of 'manim --help' has been improved"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:19
msgid "Implement logging with the :code:`rich` library and a :code:`logger` object instead of plain ol' prints"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:20
msgid "Added a flag :code:`--dry_run`, which doesn't write any media"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:21
msgid "Allow for running manim with :code:`python3 -m manim`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:22
msgid "Refactored Tex Template management. You can now use custom templates with command line args using :code:`--tex_template`!"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:23
msgid "Re-add :code:`--save_frames` flag, which will save each frame as a png"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:24
msgid "Re-introduce manim feature that allows you to type manim code in :code:`stdin` if you pass a minus sign :code:`(-)` as filename"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:25
msgid "Added the :code:`--custom_folders` flag which yields a simpler output folder structure"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:26
msgid "Re-implement GIF export with the :code:`-i` flag (using this flag outputs ONLY a .gif file, and no .mp4 file)"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:27
msgid "Added a :code:`--verbose` flag"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:28
msgid "You can save the logs to a file by using :code:`--log_to_file`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:29
msgid "Read :code:`tex_template` from config file if not specified by :code:`--tex_template`."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:30
msgid "Add experimental javascript rendering with :code:`--use_js_renderer`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:31
msgid "Add :code:`-q/--quality [k|p|h|m|l]` flag and removed :code:`-m/-l` flags."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:32
msgid "Removed :code:`--sound` flag"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:36
msgid "Config system"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:38
msgid "Implement a :code:`manim.cfg` config file system, that consolidates the global configuration, the command line argument parsing, and some of the constants defined in :code:`constants.py`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:39
msgid "Added utilities for manipulating Manim’s :code:`.cfg` files."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:40
msgid "Added a subcommand structure for easier use of utilities managing :code:`.cfg` files"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:41
msgid "Also some variables have been moved from ``constants.py`` to the new config system:"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:43
msgid "``FRAME_HEIGHT`` to ``config[\"frame_width\"]``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:44
msgid "``TOP`` to ``config[\"frame_height\"] / 2 * UP``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:45
msgid "``BOTTOM`` to ``config[\"frame_height\"] / 2 * DOWN``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:46
msgid "``LEFT_SIDE`` to ``config[\"frame_width\"] / 2 * LEFT``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:47
msgid "``RIGHT_SIDE`` to ``config[\"frame_width\"] / 2 * RIGHT``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:48
msgid "``self.camera.frame_rate`` to ``config[\"frame_rate\"]``"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:54
msgid "Mobjects, Scenes, and Animations"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:56
msgid "Add customizable left and right bracket for :code:`Matrix` mobject and :code:`set_row_colors` method for matrix mobject"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:57
msgid "Add :code:`AddTeXLetterByLetter` animation"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:58
msgid "Enhanced GraphScene"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:60
msgid "You can now add arrow tips to axes"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:61
msgid "extend axes a bit at the start and/or end"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:62
msgid "have invisible axes"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:63
msgid "highlight the area between two curves"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:64
msgid "ThreeDScene now supports 3dillusion_camera_rotation"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:65
msgid "Add :code:`z_index` for manipulating depth of Objects on scene."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:66
msgid "Add a :code:`VDict` class: a :code:`VDict` is to a :code:`VGroup` what a :code:`dict` is to a :code:`list`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:67
msgid "Added Scene-caching feature. Now, if a partial movie file is unchanged in your code, it isn’t rendered again! [HIGHLY UNSTABLE We're working on it ;)]"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:68
msgid "Most :code:`get_` and :code:`set_` methods have been removed in favor of instance attributes and properties"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:69
msgid "The :code:`Container` class has been made into an AbstractBaseClass, i.e. in cannot be instantiated. Instead, use one of its children classes"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:70
msgid "The ``TextMobject`` and ``TexMobject`` objects have been deprecated, due to their confusing names, in favour of ``Tex`` and ``MathTex``. You can still, however, continue to use ``TextMobject`` and ``TexMobject``, albeit with Deprecation Warnings constantly reminding you to switch."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:71
msgid "Add a :code:`Variable` class for displaying text that continuously updates to reflect the value of a python variable."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:72
msgid "The ``Tex`` and ``MathTex`` objects allow you to specify a custom TexTemplate using the ``template`` keyword argument."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:73
msgid ":code:`VGroup` now supports printing the class names of contained mobjects and :code:`VDict` supports printing the internal dict of mobjects"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:74
msgid "Add all the standard easing functions"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:75
msgid ":code:`Scene` now renders when :code:`Scene.render()` is called rather than upon instantiation."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:76
msgid ":code:`ValueTracker` now supports increment using the `+=` operator (in addition to the already existing `increment_value` method)"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:77
msgid "Add :class:`PangoText` for rendering texts using Pango."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:81
msgid "Documentation"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:83
msgid "Added clearer installation instructions, tutorials, examples, and API reference [WIP]"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:87
msgid "Fixes"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:89
msgid "Initialization of directories has been moved to :code:`config.py`, and a bunch of bugs associated to file structure generation have been fixed"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:90
msgid "Nonfunctional file :code:`media_dir.txt` has been removed"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:91
msgid "Nonfunctional :code:`if` statements in :code:`scene_file_writer.py` have been removed"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:92
msgid "Fix a bug where trying to render the example scenes without specifying the scene would show all scene objects in the library"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:93
msgid "Many :code:`Exceptions` have been replaced for more specific exception subclasses"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:94
msgid "Fixed a couple of subtle bugs in :code:`ArcBetweenPoints`"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:98
msgid "Of interest to developers"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:100
msgid "Python code formatting is now enforced by using the :code:`black` tool"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:101
msgid "PRs now require two approving code reviews from community devs before they can be merged"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:102
msgid "Added tests to ensure stuff doesn't break between commits (For developers) [Uses Github CI, and Pytest]"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:103
msgid "Add contribution guidelines (for developers)"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:104
msgid "Added autogenerated documentation with sphinx and autodoc/autosummary [WIP]"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:105
msgid "Made manim internally use relative imports"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:106
msgid "Since the introduction of the :code:`TexTemplate` class, the files :code:`tex_template.tex` and :code:`ctex_template.tex` have been removed"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:107
msgid "Added logging tests tools."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:108
msgid "Added ability to save logs in json"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:109
msgid "Move to Poetry."
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:110
msgid "Colors have moved to an Enum"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:113
msgid "Other Changes"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:115
msgid "Cleanup 3b1b Specific Files"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:116
msgid "Rename package from manimlib to manim"
msgstr ""
#: ../../source/changelog/0.1.0-changelog.rst:117
msgid "Move all imports to :code:`__init__`, so :code:`from manim import *` replaces :code:`from manimlib.imports import *`"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.1.1-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.1.1-changelog.rst:3
msgid "v0.1.1"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:5
msgid "December 1, 2020"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:7
msgid "Changes since Manim Community release v0.1.0"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:10
msgid "Plugins"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:12
msgid "Provided a standardized method for plugin discoverability, creation, installation, and usage. See the :ref:`documentation <plugins>`."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:16
msgid "Fixes"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:18
msgid "JsRender is optional to install. (via :pr:`697`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:19
msgid "Allow importing modules from the same directory as the input file when using ``manim`` from the command line (via :pr:`724`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:21
msgid "Remove some unnecessary or unpythonic methods from :class:`~.Scene` (``get_mobjects``, ``add_mobjects_among``, ``get_mobject_copies``), via :pr:`758`."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:24
msgid "Fix formatting of :class:`~.Code` (via :pr:`798`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:27
msgid "Configuration"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:29
msgid "Removed the ``skip_animations`` config option and added the ``Renderer.skip_animations`` attribute instead (via :pr:`696`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:31
msgid "The global ``config`` dict has been replaced by a global ``config`` instance of the new class :class:`~.ManimConfig`. This class has a dict-like API, so this should not break user code, only make it more robust. See the Configuration tutorial for details."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:35
msgid "Added the option to configure a directory for external assets (via :pr:`649`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:39
msgid "Documentation"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:41
msgid "Add ``:issue:`` and ``:pr:`` directives for simplifying linking to issues and pull requests on GitHub (via :pr:`685`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:43
msgid "Add a ``skip-manim`` tag for skipping the ``.. manim::`` directive when building the documentation locally (via :pr:`796`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:48
msgid "Mobjects, Scenes, and Animations"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:50
msgid "The ``alignment`` attribute to Tex and MathTex has been removed in favour of ``tex_environment``."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:51
msgid ":class:`~.Text` now uses Pango for rendering. ``PangoText`` has been removed. The old implementation is still available as a fallback as :class:`~.CairoText`."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:52
msgid "Variations of :class:`~.Dot` have been added as :class:`~.AnnotationDot` (a bigger dot with bolder stroke) and :class:`~.LabeledDot` (a dot containing a label)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:55
msgid "Scene.set_variables_as_attrs has been removed (via :pr:`692`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:56
msgid "Ensure that the axes for graphs (:class:`GraphScene`) always intersect (:pr:`580`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:57
msgid "Now Mobject.add_updater does not call the newly-added updater by default (use ``call_updater=True`` instead) (via :pr:`710`)"
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:59
msgid "VMobject now has methods to determine and change the direction of the points (via :pr:`647`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:60
msgid "Added BraceBetweenPoints (via :pr:`693`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:61
msgid "Added ArcPolygon and ArcPolygonFromArcs (via :pr:`707`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:62
msgid "Added Cutout (via :pr:`760`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:63
msgid "Added Mobject raise not implemented errors for dunder methods and implementations for VGroup dunder methods (via :pr:`790`)."
msgstr ""
#: ../../source/changelog/0.1.1-changelog.rst:64
msgid "Added :class:`~.ManimBanner` for a animated version of our logo and banner (via :pr:`729`)"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.10.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.10.0-changelog.rst:3
msgid "v0.10.0"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:5
msgid "September 01, 2021"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:10
msgid "A total of 40 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:14
msgid "Animfysyk +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:15
#: ../../source/changelog/0.10.0-changelog.rst:48
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:16
msgid "Christian Clauss"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:17
msgid "Daniel Adelodun +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:18
msgid "Darigov Research"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:19
#: ../../source/changelog/0.10.0-changelog.rst:49
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:20
msgid "Eric Biedert +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:21
#: ../../source/changelog/0.10.0-changelog.rst:53
msgid "Harivinay"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:22
#: ../../source/changelog/0.10.0-changelog.rst:55
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:23
msgid "Jephian Lin +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:24
msgid "Joy Bhalla +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:25
#: ../../source/changelog/0.10.0-changelog.rst:60
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:26
msgid "Lalourche +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:27
msgid "Max Stoumen"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:28
#: ../../source/changelog/0.10.0-changelog.rst:61
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:29
#: ../../source/changelog/0.10.0-changelog.rst:62
msgid "Oliver"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:30
msgid "Partha Das +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:31
msgid "Raj Dandekar +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:32
msgid "Rohan Sharma +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:33
#: ../../source/changelog/0.10.0-changelog.rst:65
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:34
msgid "Václav Hlaváč +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:35
msgid "asjadaugust +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:36
#: ../../source/changelog/0.10.0-changelog.rst:66
msgid "ccn"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:37
#: ../../source/changelog/0.10.0-changelog.rst:67
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:38
#: ../../source/changelog/0.10.0-changelog.rst:69
msgid "sparshg"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:39
msgid "vinnniii15 +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:40
msgid "vladislav doster +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:41
msgid "xia0long +"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:44
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:47
msgid "Aathish Sivasubrahmanian"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:50
msgid "Devin Neal"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:51
msgid "Eric Biedert"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:52
msgid "GameDungeon"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:54
msgid "Hugues Devimeux"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:56
msgid "Jason Villanueva"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:57
msgid "Jephian Lin"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:58
msgid "Joy Bhalla"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:59
msgid "KingWampy"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:63
msgid "Raghav Goel"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:64
msgid "Raj Dandekar"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:68
msgid "ralphieraccoon"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:72
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:74
msgid "A total of 59 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:77
msgid "Breaking changes"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:81
msgid ":pr:`1843`: Dropped redundant OpenGL files and add metaclass support for :class:`~.Surface`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:80
msgid "``OpenGL<x>`` classes from ``opengl_geometry.py``, ``opengl_text_mobject.py``, ``opengl_tex_mobject.py``, ``opengl_svg_path.py``, ``opengl_svg_mobject.py`` and most of ``opengl_three_dimensions.py`` have been removed."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:81
msgid "``ParametricSurface`` has been renamed to :class:`~.Surface`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:84
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:86
msgid ":pr:`1941`: Added examples, tests and improved documentation for :mod:`~.coordinate_systems`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:89
msgid ":pr:`1694`: Added ``font_size`` parameter for :class:`~.Tex` and :class:`~.Text`, replaced ``scale`` parameters with ``font_size``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:92
msgid ":pr:`1860`: Removed :class:`~.GraphScene`, :class:`~.NumberLineOld` and parameters for :class:`~.ChangingDecimal`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:96
msgid "New features"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:99
msgid ":pr:`1929`: Implementing a ``zoom`` parameter for :meth:`.ThreeDScene.move_camera`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:99
msgid "Zooming into a :class:`~.ThreeDScene` can now be done by calling, for example, ``self.move_camera(zoom=2)`` in the ``construct`` method."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:101
msgid ":pr:`1980`: Added a ``dissipating_time`` keyword argument to :class:`~.TracedPath` to allow animating a dissipating path"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:105
msgid ":pr:`1899`: Allow switching the renderer to OpenGL at runtime"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:105
msgid "Previously, the metaclass approach only changed the inheritance chain to switch between OpenGL and cairo mobjects when the class objects are initialized, i.e., at import time. This PR also triggers the changes to the inheritance chain when the value of ``config.renderer`` is changed."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:107
msgid ":pr:`1828`: Added configuration option ``zero_pad`` for zero padding PNG file names"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:111
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:113
msgid ":pr:`1882`: Added OpenGL support for :class:`~.PMobject` and its subclasses"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:116
msgid ":pr:`1881`: Added methods :meth:`.Angle.get_lines` and :meth:`.Angle.get_value` to :class:`~.Angle`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:119
msgid ":pr:`1952`: Added the option to save last frame for OpenGL"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:122
msgid ":pr:`1922`: Fixed IPython interface to exit cleanly when OpenGL renderer raises an error"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:125
msgid ":pr:`1923`: Fixed CLI help text for ``manim init`` subcommand so that it is not truncated"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:129
msgid ":pr:`1868`: Added OpenGL support to IPython magic"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:129
msgid "The OpenGL renderer can now be used in jupyter notebooks when using the ``%%manim`` magic command."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:131
msgid ":pr:`1841`: Reduced default resolution of :class:`~.Dot3D`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:134
msgid ":pr:`1866`: Allow passing keyword argument ``corner_radius`` to :class:`~.SurroundingRectangle`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:137
msgid ":pr:`1847`: Allow :class:`~.Cross` to be created without requiring a mobject"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:141
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:143
msgid ":pr:`1985`: Use ``height`` to determine ``font_size`` instead of the ``_font_size`` attribute"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:146
msgid ":pr:`1758`: Fixed scene selection being ignored when using the OpenGL renderer"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:149
msgid ":pr:`1871`: Fixed broken :meth:`.VectorScene.vector_to_coords`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:152
msgid ":pr:`1973`: Fixed indexing of :meth:`.Table.get_entries` to respect row length"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:155
msgid ":pr:`1950`: Fixed passing custom arrow shapes to :class:`~.CurvedArrow`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:158
msgid ":pr:`1967`: Fixed :attr:`.Axes.coordinate_labels` referring to the entire axis, not just its labels"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:161
msgid ":pr:`1951`: Fixed :meth:`.Axes.get_line_graph` returning a graph rendered below the axes"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:164
msgid ":pr:`1943`: Added ``buff`` keyword argument to :class:`~.BraceLabel`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:167
msgid ":pr:`1938`: Fixed :class:`~.Rotate` for angles that are multiples of :math:`2\\pi`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:170
msgid ":pr:`1924`: Made arrow tips rotate ``IN`` and ``OUT`` properly"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:173
msgid ":pr:`1931`: Fixed ``row_heights`` in :meth:`.Mobject.arrange_in_grid`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:176
msgid ":pr:`1893`: Fixed CLI error when rendering a file containing a single scene without specifying the scene name"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:179
msgid ":pr:`1744`: Fixed bug in :class:`~.NumberPlane` with strictly positive or strictly negative values for ``x_range`` and ``y_range``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:182
msgid ":pr:`1887`: Fixed ``custom_config`` not working in ``frames_comparison``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:185
msgid ":pr:`1879`: Fixed how the installed version is determined by Poetry"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:189
msgid "Documentation-related changes"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:191
msgid ":pr:`1979`: Corrected Japanese phrases in documentation"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:194
msgid ":pr:`1976`: Fixed labelling of languages in documentation example"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:197
msgid ":pr:`1949`: Rewrite installation instructions from scratch"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:200
msgid ":pr:`1963`: Added sitemap to ``robots.txt``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:203
msgid ":pr:`1939`: Fixed formatting of parameter description of :class:`~.NumberPlane`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:206
msgid ":pr:`1918`: Fixed a typo in the text tutorial"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:209
msgid ":pr:`1915`: Improved the wording of the installation instructions for Google Colab"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:212
msgid ":pr:`1906`: Improved language and overall consistency in ``README``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:215
msgid ":pr:`1880`: Updated tutorials to use ``.animate`` instead of :class:`~.ApplyMethod`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:218
msgid ":pr:`1877`: Remove duplicated imports in some documentation examples"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:221
msgid ":pr:`1869`: Fixed duplicated Parameters section in :meth:`.Mobject.arrange_in_grid`"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:225
msgid "Changes concerning the testing system"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:227
msgid ":pr:`1894`: Fixed an OpenGL test"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:231
msgid "Changes to our development infrastructure"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:233
msgid ":pr:`1987`: Added support for using OpenGL in subprocess in Windows pipeline"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:236
msgid ":pr:`1964`: Added ``CITATION.cff`` and a method to automatically update this citation with new releases"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:239
msgid ":pr:`1856`: Modified Dockerfile to support multi-platform builds via ``docker buildx``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:242
msgid ":pr:`1955`: Partially support OpenGL rendering with Docker"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:245
msgid ":pr:`1896`: Made RTD apt install FFMPEG instead of installing a Python binding"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:248
msgid ":pr:`1864`: Shortened and simplified PR template"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:251
msgid ":pr:`1853`: Updated Sphinx to 4.1.2"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:255
msgid "Code quality improvements and similar refactors"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:257
msgid ":pr:`1960`: Ignore fewer flake8 errors"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:260
msgid ":pr:`1947`: Set flake8 not to ignore undefined names in Python code"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:263
msgid ":pr:`1948`: flake8: Set max-line-length instead of ignoring long lines"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:268
msgid ":pr:`1956`: Upgrade to modern Python syntax"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:267
msgid "This pull request was created `with the command <https://github.com/asottile/pyupgrade#readme>`__ ``pyupgrade --py36-plus **/*.py``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:268
msgid "Python f-strings simplify the code and `should speed up execution <https://www.scivision.dev/python-f-string-speed>`__."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:271
msgid ":pr:`1898`: Replaced ``self.data[\"attr\"]`` and ``self.uniforms[\"attr\"]`` with ``self.attr``"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:271
msgid "In particular, ``OpenGLVMobject.points`` can now be accessed directly."
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:273
msgid ":pr:`1934`: Improved code quality by implementing suggestions from LGTM"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:276
msgid ":pr:`1861`: Updated ``dearpygui`` version to 0.8.x"
msgstr ""
#: ../../source/changelog/0.10.0-changelog.rst:280
msgid "New releases"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.11.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.11.0-changelog.rst:3
msgid "v0.11.0"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:5
msgid "October 02, 2021"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:10
msgid "A total of 31 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:14
#: ../../source/changelog/0.11.0-changelog.rst:40
msgid "Aathish Sivasubrahmanian"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:15
#: ../../source/changelog/0.11.0-changelog.rst:41
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:16
msgid "Charlie +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:17
msgid "Christopher Besch +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:18
#: ../../source/changelog/0.11.0-changelog.rst:43
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:19
msgid "Evan Boehs +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:20
#: ../../source/changelog/0.11.0-changelog.rst:45
msgid "GameDungeon"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:21
#: ../../source/changelog/0.11.0-changelog.rst:46
msgid "Hugues Devimeux"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:22
msgid "Jerónimo Squartini"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:23
#: ../../source/changelog/0.11.0-changelog.rst:49
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:24
msgid "Meredith Espinosa +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:25
#: ../../source/changelog/0.11.0-changelog.rst:51
msgid "Mysaa"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:26
#: ../../source/changelog/0.11.0-changelog.rst:52
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:27
msgid "Nicolai Weitkemper +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:28
#: ../../source/changelog/0.11.0-changelog.rst:54
msgid "Oliver"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:29
#: ../../source/changelog/0.11.0-changelog.rst:56
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:30
msgid "Tim +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:31
#: ../../source/changelog/0.11.0-changelog.rst:59
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:32
msgid "imadjamil +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:33
msgid "leleogere +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:34
msgid "Максим Заякин +"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:37
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:42
msgid "Charlie"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:44
msgid "Evan Boehs"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:47
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:48
msgid "Jason Villanueva"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:50
msgid "Mark Miller"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:53
msgid "Nicolai Weitkemper"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:55
msgid "Raghav Goel"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:57
msgid "Skaft"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:58
msgid "friedkeenan"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:60
msgid "leleogere"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:63
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:65
msgid "A total of 55 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:68
msgid "Breaking changes"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:71
msgid ":pr:`1990`: Changed and improved the implementation of :meth:`.CoordinateSystem.get_area` to work without Riemann rectangles"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:71
msgid "This changes how :meth:`.CoordinateSystem.get_area` is implemented. To mimic the old behavior (tiny Riemann rectangles), use :meth:`.CoordinateSystem.get_riemann_rectangles` with a small value for ``dx``."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:74
msgid ":pr:`2095`: Changed angles for polar coordinates to use math convention"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:74
msgid "This PR switches the parameter names ``phi`` and ``theta`` in :func:`cartesian_to_spherical` and :func:`spherical_to_cartesian` to align with the `usual definition in mathematics <https://user-images.githubusercontent.com/83535735/131709630-87290522-7747-4b21-9411-dd3d35ebaf0f.png>`__."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:77
msgid "Highlights"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:80
msgid ":pr:`2094`: Implemented :class:`~.ImplicitFunction` and :meth:`.CoordinateSystem.get_implicit_curve` for plotting implicit curves"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:80
msgid "An :class:`~.ImplicitFunction` that plots the points :math:`(x, y)` which satisfy some equation :math:`f(x,y) = 0`."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:82
msgid ":pr:`2075`: Implemented :meth:`.Mobject.set_default`, a mechanism for changing default values of keyword arguments"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:87
msgid ":pr:`1998`: Added support for Boolean Operations on VMobjects"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:86
msgid "This PR introduces boolean operations for :class:`~.VMobject`; see details and examples at :class:`~.Union`, :class:`~.Difference`, :class:`~.Intersection` and :class:`~.Exclusion`."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:90
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:92
msgid ":pr:`2123`: Renamed ``distance`` parameter of :class:`.ThreeDScene` and :class:`.ThreeDCamera` to ``focal_distance``"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:95
msgid ":pr:`2102`: Deprecated :class:`~.SampleSpaceScene` and :class:`~.ReconfigurableScene`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:98
msgid ":pr:`2061`: Removed deprecated ``u_min``, ``u_max``, ``v_min``, ``v_max`` in :class:`~.Surface`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:101
msgid ":pr:`2024`: Deprecated redundant methods :meth:`.Mobject.rotate_in_place`, :meth:`.Mobject.scale_in_place`, :meth:`.Mobject.scale_about_point`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:104
msgid ":pr:`1991`: Deprecated :meth:`.VMobject.get_points`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:108
msgid "New features"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:110
msgid ":pr:`2118`: Added 3D support for :class:`~.ArrowVectorField` and :class:`~.StreamLines`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:113
msgid ":pr:`1469`: Added :meth:`.VMobject.proportion_from_point` to measure the proportion of points along a Bezier curve"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:117
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:119
msgid ":pr:`2111`: Improved setting of OpenGL colors"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:122
msgid ":pr:`2113`: Added OpenGL compatibility to :meth:`.ThreeDScene.begin_ambient_camera_rotation` and :meth:`.ThreeDScene.move_camera`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:125
msgid ":pr:`2016`: Added OpenGL support for :mod:`~.mobject.boolean_ops`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:128
msgid ":pr:`2084`: Added :meth:`~Table.get_highlighted_cell` and fixed :meth:`~Table.add_highlighted_cell`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:131
msgid ":pr:`2013`: Removed unnecessary check in :class:`~.TransformMatchingAbstractBase`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:134
msgid ":pr:`1971`: Added OpenGL support for :class:`~.StreamLines`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:137
msgid ":pr:`2041`: Added config option to enable OpenGL wireframe for debugging"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:141
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:143
msgid ":pr:`2070`: Fixed :meth:`~OpenGLRenderer.get_frame` when window is created"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:146
msgid ":pr:`2071`: Fixed :class:`~AnimationGroup` OpenGL compatibility"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:149
msgid ":pr:`2108`: Fixed swapped axis step values in :class:`~.NumberPlane`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:152
msgid ":pr:`2072`: Added OpenGL compatibility for :class:`~.Cube`."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:155
msgid ":pr:`2060`: Fixed OpenGL compatibility issue for meth:`~Line.set_opacity`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:158
msgid ":pr:`2037`: Fixed return value of :meth:`~.OpenGLMobject.apply_complex_function`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:161
msgid ":pr:`2039`: Added OpenGL compatibility for :meth:`~Cylinder.add_bases`."
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:164
msgid ":pr:`2066`: Fixed error raised by logging when cache is full"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:167
msgid ":pr:`2026`: Fixed OpenGL shift animation for :class:`~.Text`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:170
msgid ":pr:`2028`: Fixed OpenGL overriding SVG fill color"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:173
msgid ":pr:`2043`: Fixed bug where :meth:`.NumberLine.add_labels` cannot accept non-mobject labels"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:176
msgid ":pr:`2011`: Fixed ``-a`` flag for OpenGL rendering"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:179
msgid ":pr:`1994`: Fix :meth:`~.input_to_graph_point` when passing a line graph (from :meth:`.Axes.get_line_graph`)"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:182
msgid ":pr:`2017`: Avoided using deprecated ``get_points`` method and fixed :class:`~.OpenGLPMPoint` color"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:186
msgid "Documentation-related changes"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:188
msgid ":pr:`2131`: Copyedited the configuration tutorial in the documentation"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:191
msgid ":pr:`2120`: Changed ``manim_directive`` to use a clean configuration via ``tempconfig``"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:194
msgid ":pr:`2122`: Fixed broken links in inheritance graphs by moving them to ``reference.rst``"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:197
msgid ":pr:`2115`: Improved docstring of :meth:`.PMobject.add_points`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:200
msgid ":pr:`2116`: Made type hint for ``line_spacing`` argument of :class:`~.Paragraph` more accurate"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:203
msgid ":pr:`2117`: Changed the way the background color was set in a documentation example to avoid leaking the setting to other examples"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:206
msgid ":pr:`2101`: Added note that translation process is not ready"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:209
msgid ":pr:`2055`: Fixed parameter types of :meth:`.Graph.add_edges` and :meth:`.Graph.add_vertices`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:212
msgid ":pr:`862`: Prepared documentation for translation (still work in progress)"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:215
msgid ":pr:`2035`: Fixed broken link in README"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:218
msgid ":pr:`2020`: Corrected paths to user-wide configuration files for MacOS and Linux"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:222
msgid "Changes concerning the testing system"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:224
msgid ":pr:`2008`: Reuse CLI flag tests for OpenGL"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:227
msgid ":pr:`2080`: Reused :class:`~.Mobject` tests for :class:`~.OpenGLMobject`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:231
msgid "Changes to our development infrastructure"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:233
msgid ":pr:`2004`: Cancel previous workflows in the same branch in Github Actions"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:237
msgid "Code quality improvements and similar refactors"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:239
msgid ":pr:`2050`: Make colour aliases IDE-friendly"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:242
msgid ":pr:`2126`: Fixed whitespace in info message issued by :meth:`.SceneFileWriter.clean_cache`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:245
msgid ":pr:`2124`: Upgraded several dependencies (in particular: ``skia-pathops``)"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:248
msgid ":pr:`2001`: Fixed several warnings issued by LGTM"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:251
msgid ":pr:`2064`: Removed duplicate insert shader directory"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:254
msgid ":pr:`2027`: Improved wording in info message issued by :meth:`.SceneFileWriter.clean_cache`"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:257
msgid ":pr:`1968`: Sharpened Flake8 configuration and fixed resulting warnings"
msgstr ""
#: ../../source/changelog/0.11.0-changelog.rst:261
msgid "New releases"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.12.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.12.0-changelog.rst:3
msgid "v0.12.0"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:5
msgid "November 02, 2021"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:10
msgid "A total of 40 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:14
msgid "Anima. +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:15
msgid "Arcstur +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:16
#: ../../source/changelog/0.12.0-changelog.rst:47
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:17
#: ../../source/changelog/0.12.0-changelog.rst:48
msgid "Christopher Besch"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:18
#: ../../source/changelog/0.12.0-changelog.rst:49
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:19
msgid "David Yang +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:20
msgid "Dhananjay Goratela +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:21
msgid "Ethan Rooke +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:22
msgid "Eugene Chung +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:23
msgid "GameDungeon"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:24
msgid "Gustav-Rixon +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:25
#: ../../source/changelog/0.12.0-changelog.rst:56
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:26
msgid "Josiah Winslow +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:27
#: ../../source/changelog/0.12.0-changelog.rst:58
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:28
msgid "Martmists +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:29
msgid "Michael Hill +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:30
#: ../../source/changelog/0.12.0-changelog.rst:60
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:31
msgid "Nick +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:32
msgid "NotWearingPants +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:33
msgid "Peeter Joot +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:34
#: ../../source/changelog/0.12.0-changelog.rst:63
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:35
msgid "Viicos +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:36
msgid "heitor +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:37
#: ../../source/changelog/0.12.0-changelog.rst:65
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:38
msgid "kieran-pringle +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:39
msgid "Виктор Виктор +"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:42
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:45
msgid "Alex Lembcke"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:46
msgid "Anima."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:50
msgid "David Yang"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:51
msgid "Dhananjay Goratela"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:52
msgid "Ethan Rooke"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:53
msgid "Eugene Chung"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:54
msgid "Gustav-Rixon"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:55
msgid "Hugues Devimeux"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:57
msgid "Jason Villanueva"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:59
msgid "Mysaa"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:61
msgid "Nick"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:62
msgid "Oliver"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:64
msgid "Viicos"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:66
msgid "kieran-pringle"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:69
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:71
msgid "A total of 52 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:74
msgid "Highlights"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:79
msgid ":pr:`1812`: Implemented logarithmic scaling for :class:`~.NumberLine` / :class:`~.Axes`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:77
msgid "This implements scaling bases that can be passed to the ``scaling`` keyword argument of :class:`.NumberLine`. See :class:`.LogBase` (for a logarithmic scale) and :class:`.LinearBase` (for the default scale) for more details and examples."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:85
msgid ":pr:`2152`: Introduced API for scene sections via :meth:`.Scene.next_section`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:82
msgid "Sections divide a scene into multiple parts, resulting in multiple output videos (when using the ``--save_sections`` flag). The cuts between two sections are defined by the user in the :meth:`~.Scene.construct` method. Each section has an optional name and type, which can be used by a plugin (`see an example <https://github.com/ManimEditorProject/manim_editor>`__). You can skip rendering specific sections with the ``skip_animations`` keyword argument."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:88
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:90
msgid ":pr:`1926`: OpenGL: changed ``submobjects`` to be a property"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:93
msgid ":pr:`2245`: Removed deprecated method ``get_center_point`` and parameters ``azimuth_label_scale``, ``number_scale_value``, ``label_scale``, ``scale_factor``, ``size``, ``x_min``, ``x_max``, ``delta_x``, ``y_min``, ``y_max``, ``delta_y``"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:96
msgid ":pr:`2187`: Renamed ``get_graph`` and its variants to :meth:`~.CoordinateSystem.plot`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:99
msgid ":pr:`2065`: Deprecated :class:`~.FullScreenFadeRectangle` and :class:`~.PictureInPictureFrame`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:103
msgid "New features"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:105
msgid ":pr:`2025`: Implemented :meth:`.CoordinateSystem.input_to_graph_coords` and fixed :meth:`.CoordinateSystem.angle_of_tangent`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:108
msgid ":pr:`2151`: Added option to set the input file from a config file"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:111
msgid ":pr:`2128`: Added keyword arguments ``match_center``, ``match_width`` etc. to :meth:`.Mobject.become`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:114
msgid ":pr:`2162`: Implemented :meth:`.MovingCamera.auto_zoom` for automatically zooming onto specified mobjects"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:117
msgid ":pr:`2236`: Added ``skip_animations`` argument to :meth:`.Scene.next_section`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:120
msgid ":pr:`2196`: Implemented :meth:`.Line3D.parallel_to` and :meth:`.Line3D.perpendicular_to`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:124
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:128
msgid ":pr:`2138`: Fixed example for :meth:`~.Vector.coordinate_label` and added more customization for :class:`~.Matrix`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:127
msgid "Additional keyword arguments for :meth:`~.Vector.coordinate_label` are passed to the constructed matrix."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:128
msgid ":class:`~.Matrix` now accepts a ``bracket_config`` keyword argument."
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:130
msgid ":pr:`2139`: Changed the color of :class:`~.NumberLine` from ``LIGHT_GREY`` to ``WHITE``"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:133
msgid ":pr:`2157`: Added :meth:`.CoordinateSystem.plot_polar_graph`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:136
msgid ":pr:`2243`: Fixed wasteful recursion in :meth:`.Mobject.get_merged_array`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:139
msgid ":pr:`2205`: Improved last frame output handling for the OpenGL renderer"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:142
msgid ":pr:`2172`: Added ``should_render`` attribute to disable rendering mobjects"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:145
msgid ":pr:`2182`: Changed the default width of videos in Jupyter notebooks to 60%"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:149
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:151
msgid ":pr:`2244`: Fixed :meth:`.CoordinateSystem.get_area` when using few plot points and a boundary graph"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:154
msgid ":pr:`2232`: Fixed :class:`.Graph` stopping to update after animating additions/deletions of vertices or edges"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:157
msgid ":pr:`2142`: Fixed issue with duplicates in OpenGL family and added tests"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:160
msgid ":pr:`2168`: Fixed order of return values of :func:`.space_ops.cartesian_to_spherical`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:163
msgid ":pr:`2160`: Made projection shaders compatible with :class:`.StreamLines`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:166
msgid ":pr:`2140`: Fixed passing color lists to :meth:`.Mobject.set_color` for the OpenGL renderer"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:169
msgid ":pr:`2211`: Fixed animations not respecting the specified rate function"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:172
msgid ":pr:`2161`: Fixed ``IndexOutOfBoundsError`` in TeX logging"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:175
msgid ":pr:`2148`: Fixed :class:`~.Arrow` tip disorientation with :meth:`.Line.put_start_and_end_on`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:178
msgid ":pr:`2192`: Fixed :func:`.svg_path.string_to_numbers` sometimes returning strings"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:181
msgid ":pr:`2185`: Fixed type mismatch for height and width parameters of :class:`~.Text`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:185
msgid "Documentation-related changes"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:187
msgid ":pr:`2228`: Added a new boolean operation example to the gallery"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:190
msgid ":pr:`2239`: Removed erroneous raw string from text tutorial"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:193
msgid ":pr:`2184`: Moved comments in :class:`~.VMobject` to documentation"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:196
msgid ":pr:`2217`: Removed superfluous dots in documentation of :class:`.Section`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:199
msgid ":pr:`2215`: Fixed typo in docstring of :meth:`.ThreeDAxes.get_z_axis_label`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:202
msgid ":pr:`2212`: Fixed Documentation for Sections"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:205
msgid ":pr:`2201`: Fixed a typo in the documentation"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:208
msgid ":pr:`2165`: Added Crowdin configuration and changed source files to ``.pot`` format"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:211
msgid ":pr:`2130`: Transferred troubleshooting installation related snippets from Discord to the documentation"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:214
msgid ":pr:`2176`: Modified :meth:`.Mobject.set_default` example to prevent leaking across the docs"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:218
msgid "Changes concerning the testing system"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:220
msgid ":pr:`2197`: Added tests for resolution flag"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:223
msgid ":pr:`2146`: Increased test coverage for OpenGL renderer"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:227
msgid "Changes to our development infrastructure"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:229
msgid ":pr:`2191`: Removed ``add-trailing-comma`` pre-commit hook"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:233
msgid "Code quality improvements and similar refactors"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:235
msgid ":pr:`2136`: Added type hints to all colors"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:238
msgid ":pr:`2220`: Cleanup: let ``Scene.renderer.time`` return something that makes sense"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:241
msgid ":pr:`2222`: Updated Classifiers in ``pyproject.toml``: removed Python 3.6, added Python 3.9"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:244
msgid ":pr:`2213`: Removed redundant ``partial_movie_files`` parameter in :meth:`.SceneFileWriter.combine_to_movie`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:251
msgid ":pr:`2200`: Addressed some maintenance TODOs"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:248
msgid "Changed an `Exception` to `ValueError`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:249
msgid "Fixed :meth:`.MappingCamera.points_to_pixel_coords` by adding the ``mobject`` argument of the parent"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:250
msgid "Rounded up width in :class:`.SplitScreenCamera`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:251
msgid "Added docstring to :meth:`.Camera.capture_mobject`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:253
msgid ":pr:`2194`: Added type hints to :mod:`.utils.images`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:256
msgid ":pr:`2171`: Added type hints to :mod:`.utils.ipython_magic`"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:259
msgid ":pr:`2164`: Improved readability of regular expression"
msgstr ""
#: ../../source/changelog/0.12.0-changelog.rst:263
msgid "New releases"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.13.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.13.0-changelog.rst:3
msgid "v0.13.0"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:5
msgid "December 04, 2021"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:10
msgid "A total of 27 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:14
#: ../../source/changelog/0.13.0-changelog.rst:38
msgid "Alex Lembcke"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:15
#: ../../source/changelog/0.13.0-changelog.rst:39
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:16
#: ../../source/changelog/0.13.0-changelog.rst:40
msgid "Christopher Besch"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:17
#: ../../source/changelog/0.13.0-changelog.rst:41
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:18
msgid "Filip +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:19
msgid "John Ingles +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:20
#: ../../source/changelog/0.13.0-changelog.rst:45
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:21
msgid "Lucas Ricci +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:22
msgid "Marcin Serwin +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:23
msgid "Mysaa"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:24
#: ../../source/changelog/0.13.0-changelog.rst:47
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:25
msgid "Ricky +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:26
#: ../../source/changelog/0.13.0-changelog.rst:50
msgid "Viicos"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:27
msgid "ask09ok +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:28
msgid "citrusmunch +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:29
#: ../../source/changelog/0.13.0-changelog.rst:52
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:30
msgid "mostlyaman +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:31
msgid "vmiezys +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:32
msgid "zhujisheng +"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:35
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:42
msgid "Filip"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:43
msgid "Hugues Devimeux"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:44
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:46
msgid "Lucas Ricci"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:48
msgid "Oliver"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:49
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:51
msgid "ask09ok"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:53
msgid "mostlyaman"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:56
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:58
msgid "A total of 39 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:61
msgid "Highlights"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:63
msgid ":pr:`2313`: Finalized translation process and documentation"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:67
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:75
msgid ":pr:`2331`: Removed deprecations up to ``v0.12.0``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:70
msgid "Removed ``distance`` parameters from :class:`~.ThreeDCamera` (replacement: ``focal_distance``)"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:71
msgid "Removed ``min_distance_to_new_point`` parameter from :class:`~.TracedPath`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:72
msgid "Removed ``positive_space_ratio`` and ``dash_spacing`` parameters from :class:`~.DashedVMobject`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:73
msgid "Removed ``<method>_in_place`` methods from :mod:`.mobject`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:74
msgid "Removed ``ReconfigurableScene``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:75
msgid "Removed ``SampleSpaceScene``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:77
msgid ":pr:`2312`: Replaced all occurrences of ``set_submobjects``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:81
msgid "New features"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:85
msgid ":pr:`2314`: Added basic support for adding subcaptions via :meth:`.Scene.add_subcaption`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:84
msgid "New method :meth:`.Scene.add_subcaption`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:85
msgid "New keyword arguments ``subcaption``, ``subcaption_duration``, ``subcaption_offset`` for :meth:`.Scene.play`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:87
msgid ":pr:`2267`: Implemented :meth:`.CoordinateSystem.plot_antiderivative_graph`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:91
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:93
msgid ":pr:`2347`: Moved ``manim_directive.py`` to ``manim.utils.docbuild``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:96
msgid ":pr:`2340`: Added documentation for :mod:`.animation.growing` and improved :class:`.SpinInFromNothing`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:99
msgid ":pr:`2343`: Replaced current tree layout algorithm with SageMath's for improved layout of large trees"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:102
msgid ":pr:`2351`: Added missing ``**kwargs`` parameter to :meth:`.Table.add_highlighted_cell`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:105
msgid ":pr:`2344`: Resized SVG logos, fit content to canvas"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:109
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:111
msgid ":pr:`2359`: Resolved ``ValueError`` when calling ``manim cfg write``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:114
msgid ":pr:`2276`: Fixed bug with alignment of z-axis in :class:`~.ThreeDAxes`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:117
msgid ":pr:`2325`: Several improvements to handling of ``quality`` argument"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:120
msgid ":pr:`2335`: Fixed bug with zooming camera and :class:`~.PointCloud`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:123
msgid ":pr:`2328`: Fixed bug causing incorrect RGBA values to be passed to cairo"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:126
msgid ":pr:`2292`: Fixed positioning of :class:`~.Flash`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:129
msgid ":pr:`2262`: Fixed wrong cell coordinates with :meth:`.Table.get_cell` after scaling"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:132
msgid ":pr:`2280`: Fixed :class:`~.DecimalNumber` color when number of displayed digits changes"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:136
msgid "Documentation-related changes"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:138
msgid ":pr:`2354`: Port over docs and typings from ``mobject.py`` and ``vectorized_mobject.py`` to their OpenGL counterparts"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:141
msgid ":pr:`2350`: Added mention of Manim sideview extension for VS Code"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:144
msgid ":pr:`2342`: Removed :meth:`~.CoordinateSystem.get_graph` usage from :class:`~.Axes` example"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:147
msgid ":pr:`2216`: Edited and added new sections to the quickstart tutorial"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:150
msgid ":pr:`2279`: Added documentation for discontinuous functions"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:153
msgid ":pr:`2319`: Swapped ``dotL`` and ``dotR`` in :meth:`.Mobject.interpolate` example"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:156
msgid ":pr:`2230`: Copyedited building blocks tutorial"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:159
msgid ":pr:`2310`: Clarified that Manim does not support Python 3.10 yet in the documentation"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:162
msgid ":pr:`2294`: Made documentation front page more concise and rearranged order of tutorials"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:165
msgid ":pr:`2287`: Replace link to old interactive notebook"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:169
msgid "Changes concerning the testing system"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:171
msgid ":pr:`2346`: Made ``frames_comparsion`` decorator for frame testing a proper module of the library"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:174
msgid ":pr:`2318`: Added tests for ``remover`` keyword argument of :class:`~.AnimationGroup`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:177
msgid ":pr:`2301`: Added a test for :meth:`.ThreeDScene.add_fixed_in_frame_mobjects`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:180
msgid ":pr:`2274`: Optimized some tests to reduce duration"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:183
msgid ":pr:`2272`: Added test for :class:`~.Broadcast`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:187
msgid "Code quality improvements and similar refactors"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:189
msgid ":pr:`2327`: Corrected type hint for ``labels`` keyword argument of :class:`~.Graph`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:192
msgid ":pr:`2329`: Remove unintended line break in README"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:195
msgid ":pr:`2305`: Corrected type hint ``discontinuities`` argument for :class:`~.ParametricFunction`"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:198
msgid ":pr:`2300`: Add contact email for PyPi"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:202
msgid "New releases"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:204
msgid ":pr:`2353`: Prepare new release: ``v0.13.0``"
msgstr ""
#: ../../source/changelog/0.13.0-changelog.rst:208
msgid "Unclassified changes"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.13.1-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.13.1-changelog.rst:3
msgid "v0.13.1"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:5
msgid "December 05, 2021"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:10
msgid "A total of 2 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:14
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:17
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:20
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:23
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:25
msgid "A total of 2 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:28
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:30
msgid ":pr:`2363`: Fixed broken IPython magic command"
msgstr ""
#: ../../source/changelog/0.13.1-changelog.rst:34
msgid "New releases"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.14.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.14.0-changelog.rst:3
msgid "v0.14.0"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:5
msgid "January 07, 2022"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:10
msgid "A total of 29 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:14
#: ../../source/changelog/0.14.0-changelog.rst:38
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:15
msgid "BorisTheBrave +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:16
#: ../../source/changelog/0.14.0-changelog.rst:41
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:17
#: ../../source/changelog/0.14.0-changelog.rst:42
msgid "GameDungeon"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:18
msgid "Gergely Bencsik +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:19
#: ../../source/changelog/0.14.0-changelog.rst:45
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:20
msgid "Jihoon +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:21
msgid "Kian Kasad +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:22
msgid "Kiran-Raj-Dev +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:23
#: ../../source/changelog/0.14.0-changelog.rst:47
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:24
msgid "Leo Xu +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:25
#: ../../source/changelog/0.14.0-changelog.rst:50
msgid "Marcin Serwin"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:26
msgid "Matt Gleich +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:27
#: ../../source/changelog/0.14.0-changelog.rst:51
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:28
msgid "Steven nguyen +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:29
msgid "Vectozavr +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:30
#: ../../source/changelog/0.14.0-changelog.rst:54
msgid "Viicos"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:31
msgid "citrusmunch"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:32
msgid "netwizard22 +"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:35
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:39
msgid "BorisTheBrave"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:40
msgid "Christopher Besch"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:43
msgid "Gergely Bencsik"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:44
msgid "Hugues Devimeux"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:46
msgid "Kiran-Raj-Dev"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:48
msgid "Leo Xu"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:49
msgid "Lucas Ricci"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:52
msgid "Raghav Goel"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:53
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:55
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:58
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:60
msgid "A total of 29 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:63
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:69
msgid ":pr:`2390`: Removed deprecations up to `v0.13.0`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:66
msgid "Removed ``get_graph``, ``get_implicit_curve``, ``get_derivative_graph``, ``get_line_graph`` and ``get_parametric_curve`` in favour of their ``plot`` variants"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:67
msgid "Removed ``FullScreenFadeRectangle`` and ``PictureInPictureFrame``"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:68
msgid "Removed ``path_arc`` parameter from :class:`~.SpinInFromNothing`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:69
msgid "Removed ``set_submobjects`` method from ``opengl_mobject.py``"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:72
msgid "New features"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:75
msgid ":pr:`2341`: Update :class:`~.Text` to use new ``ManimPango`` color setting"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:75
msgid ":class:`~.Text` class now uses color setting introduced in ``ManimPango 0.4.0`` for color and gradient."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:78
msgid ":pr:`2397`: Added ``label_constructor`` parameter for :class:`~.NumberLine`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:78
msgid "Allows changing the class that will be used to construct :class:`~.Axes` and :class:`~.NumberLine` labels by default. Makes it possible to easily use :class:`~.Text` for labels if needed."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:81
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:83
msgid ":pr:`2383`: Made :meth:`.Surface.set_fill_by_value` support gradients along different axes"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:86
msgid ":pr:`2388`: Added ``about_point`` keyword argument to :class:`~.ApplyMatrix`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:89
msgid ":pr:`2395`: Add documentation for paths functions"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:94
msgid ":pr:`2372`: Improved :class:`~.DashedVMobject`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:93
msgid ":class:`~.DashedVMobject` used to create stretched and uneven dashes on most plotted curves. Now the dash lengths are equalized. An option is reserved to use the old method. New keyword argument: ``dash_offset``. This parameter shifts the starting point."
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:97
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:99
msgid ":pr:`2409`: Fixed performance degradation by trimming empty curves from paths when calling :meth:`.VMobject.align_points`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:102
msgid ":pr:`2392`: Fixed ``ZeroDivisionError`` in :mod:`~.mobject.three_dimensions`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:105
msgid ":pr:`2362`: Fixed phi updater in :meth:`.ThreeDScene.begin_3dillusion_camera_rotation`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:109
msgid "Documentation-related changes"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:111
msgid ":pr:`2415`: Removed instructions on using and installing Docker in README"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:114
msgid ":pr:`2414`: Made improvements to the :doc:`/guides/configuration` tutorial"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:117
msgid ":pr:`2423`: Changed recommendation to ``mactex-no-gui`` from ``mactex`` for macOS install"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:120
msgid ":pr:`2407`: Clarified docstrings of :meth:`.Mobject.animate`, :meth:`.Mobject.set` and :class:`~.Variable`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:123
msgid ":pr:`2352`: Added Crowdin badge"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:126
msgid ":pr:`2371`: Added ``dvips`` to list of required LaTeX packages on Linux"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:129
msgid ":pr:`2403`: Improved docstring of :class:`~.ApplyMethod` and removed propagated ``__init__`` docstring"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:132
msgid ":pr:`2391`: Fixed typo in parameter name in documentation of :class:`~.NumberLine`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:135
msgid ":pr:`2368`: Added note in Internationalization"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:139
msgid "Code quality improvements and similar refactors"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:141
msgid ":pr:`2408`: Removed various return annotations that were stifling type inference"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:144
msgid ":pr:`2424`: Removed ``strings.py``"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:147
msgid ":pr:`1972`: Added support for MyPy"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:150
msgid ":pr:`2410`: Fixed Flake8"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:153
msgid ":pr:`2401`: Fixed type annotations in :mod:`.mobject.three_dimensions`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:156
msgid ":pr:`2405`: Removed some unused OpenGL files"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:159
msgid ":pr:`2399`: Fixed type annotations in :mod:`~.mobject.table`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:162
msgid ":pr:`2385`: Made comments in quickstart tutorial more precise"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:165
msgid ":pr:`2377`: Fixed type hint for an argument of :class:`~.MoveAlongPath`"
msgstr ""
#: ../../source/changelog/0.14.0-changelog.rst:169
msgid "New releases"
msgstr ""
================================================
FILE: docs/i18n/gettext/changelog/0.15.0-changelog.pot
================================================
msgid ""
msgstr ""
"Project-Id-Version: Manim \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: ../../source/changelog/0.15.0-changelog.rst:3
msgid "v0.15.0"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:0
msgid "Date"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:5
msgid "February 26, 2022"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:8
msgid "Contributors"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:10
msgid "A total of 34 people contributed to this release. People with a '+' by their names authored a patch for the first time."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:14
msgid "Alex Lembcke"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:15
msgid "AnonymoZ +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:16
#: ../../source/changelog/0.15.0-changelog.rst:44
msgid "Benjamin Hackl"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:17
#: ../../source/changelog/0.15.0-changelog.rst:46
msgid "Darylgolden"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:18
msgid "Eshaan Naga Venkata +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:19
msgid "Faruk D. +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:20
#: ../../source/changelog/0.15.0-changelog.rst:48
msgid "GameDungeon"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:21
msgid "Kevin Cen +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:22
#: ../../source/changelog/0.15.0-changelog.rst:50
msgid "Laith Bahodi"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:23
msgid "Leo Xu"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:24
msgid "Lucas Ricci"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:25
#: ../../source/changelog/0.15.0-changelog.rst:52
msgid "Marcin Serwin"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:26
msgid "Michael McNeil Forbes +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:27
msgid "Mysaa"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:28
#: ../../source/changelog/0.15.0-changelog.rst:53
msgid "Naveen M K"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:29
msgid "Pierre Couy +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:30
msgid "Simon Ellmann +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:31
msgid "Tommy Chu +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:32
msgid "Viicos"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:33
#: ../../source/changelog/0.15.0-changelog.rst:58
msgid "ad_chaos"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:34
msgid "betafcc +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:35
msgid "friedkeenan"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:36
#: ../../source/changelog/0.15.0-changelog.rst:60
msgid "icedcoffeeee"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:37
msgid "vmoros +"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:38
msgid "鹤翔万里"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:41
msgid "The patches included in this release have been reviewed by the following contributors."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:45
msgid "Christopher Besch"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:47
msgid "Eshaan Naga Venkata"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:49
msgid "Jan-Hendrik Müller"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:51
msgid "Marcin Kurczewski"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:54
msgid "Raghav Goel"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:55
msgid "RomainJMend"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:56
msgid "Ryan McCauley"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:57
msgid "Tommy Chu"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:59
msgid "betafcc"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:63
msgid "Pull requests merged"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:65
msgid "A total of 71 pull requests were merged for this release."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:68
msgid "Breaking changes"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:71
msgid ":pr:`2476`: Improved structure of the :mod:`.mobject` module"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:71
msgid "Arrow tips now have to be imported from ``manim.mobject.geometry.tips`` instead of ``manim.mobject.geometry``."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:75
msgid ":pr:`2387`: Refactored :class:`~.BarChart` and made it inherit from :class:`~.Axes`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:74
msgid ":class:`~.BarChart` now inherits from :class:`~.Axes`, allowing it to use :class:`~.Axes`' methods. Also improves :class:`~.BarChart`'s configuration and ease of use."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:75
msgid "Added :meth:`~.BarChart.get_bar_labels` to annotate the value of each bar of a :class:`~.BarChart`."
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:78
msgid "Deprecated classes and functions"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:81
msgid ":pr:`2568`: Removed Deprecated Methods"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:81
msgid "Removed methods and classes that were deprecated since v0.10.0 and v0.11.0"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:83
msgid ":pr:`2457`: Deprecated :class:`.ShowCreationThenFadeOut`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:87
msgid "New features"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:89
msgid ":pr:`2442`: Added ``media_embed`` config option to control whether media in Jupyter notebooks is embedded"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:96
msgid ":pr:`2504`: Added finer control over :meth:`.Scene.wait` being static (i.e., no updaters) or not"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:93
msgid "Added keyword argument ``frozen_frame`` to :class:`.Wait` and :meth:`.Scene.wait`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:94
msgid "New convenience method: :meth:`.Scene.pause` (alias for ``Scene.wait(frozen_frame=True)``)"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:95
msgid "Changed default behavior for OpenGL updaters: updater functions are now not called by default when they are added"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:96
msgid "Changed default behavior of :meth:`.Scene.should_mobjects_update`: made it respect the set value of ``Wait.frozen_frame``, changed automatic determination of frozen frame state to also consider Scene updaters"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:99
msgid "Enhancements"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:101
msgid ":pr:`2478`: Alternative scaling for tree graph layout"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:104
msgid ":pr:`2565`: Allowed passing vertex configuration keyword arguments to :meth:`.Graph.add_edges`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:107
msgid ":pr:`2467`: :class:`~.MathTex`, :class:`~.Tex`, :class:`~.Text` and :class:`~.MarkupText` inherit color from their parent mobjects"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:110
msgid ":pr:`2537`: Added support for PySide coordinate system"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:113
msgid ":pr:`2158`: Added OpenGL compatibility to :meth:`.ThreeDScene.add_fixed_orientation_mobjects` and :meth:`.ThreeDScene.add_fixed_in_frame_mobjects`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:116
msgid ":pr:`2535`: Implemented performance enhancement for :meth:`.VMobject.insert_n_curves_to_point_list`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:119
msgid ":pr:`2516`: Cached view matrix for :class:`~.OpenGLCamera`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:122
msgid ":pr:`2508`: Improve performance for :meth:`.Mobject.become`"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:125
msgid ":pr:`2332`: Changed ``color``, ``stroke_color`` and ``fill_color`` attributes to properties"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:131
msgid ":pr:`2396`: Fixed animations introducing or removing objects"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:129
msgid ":class:`.ShowPassingFlash` now removes objects when the animation is finished"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:130
msgid "Added ``introducer`` keyword argument to :class:`.Animation` analogous to ``remover``"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:131
msgid "Updated :class:`.Graph` vertex addition handling"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:134
msgid "Fixed bugs"
msgstr ""
#: ../../source/changelog/0.15.0-changelog.rst:136
msgid ":pr:`2574`: Improved Error in :mod:`.utils.tex_file_writing`"
msgs
gitextract_kmopyg5o/
├── .codecov.yml
├── .codespell_ignorewords
├── .codespellrc
├── .dockerignore
├── .flake8
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── installation_issue.md
│ ├── PULL_REQUEST_TEMPLATE/
│ │ ├── bugfix.md
│ │ ├── documentation.md
│ │ └── hackathon.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ ├── codeql.yml
│ ├── dependabot.yml
│ ├── manimdependency.json
│ ├── release.yml
│ ├── scripts/
│ │ └── ci_build_cairo.py
│ └── workflows/
│ ├── cffconvert.yml
│ ├── ci.yml
│ ├── codeql.yml
│ ├── dependent-issues.yml
│ ├── publish-docker.yml
│ ├── python-publish.yml
│ └── release-publish-documentation.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .pylintrc
├── .readthedocs.yml
├── CITATION.cff
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE.community
├── README.md
├── crowdin.yml
├── docker/
│ ├── Dockerfile
│ ├── readme.md
│ └── texlive-profile.txt
├── docs/
│ ├── Makefile
│ ├── html
│ ├── i18n/
│ │ ├── fr/
│ │ │ └── LC_MESSAGES/
│ │ │ ├── index.po
│ │ │ └── installation.po
│ │ ├── gettext/
│ │ │ ├── changelog/
│ │ │ │ ├── 0.1.0-changelog.pot
│ │ │ │ ├── 0.1.1-changelog.pot
│ │ │ │ ├── 0.10.0-changelog.pot
│ │ │ │ ├── 0.11.0-changelog.pot
│ │ │ │ ├── 0.12.0-changelog.pot
│ │ │ │ ├── 0.13.0-changelog.pot
│ │ │ │ ├── 0.13.1-changelog.pot
│ │ │ │ ├── 0.14.0-changelog.pot
│ │ │ │ ├── 0.15.0-changelog.pot
│ │ │ │ ├── 0.15.1-changelog.pot
│ │ │ │ ├── 0.15.2-changelog.pot
│ │ │ │ ├── 0.16.0-changelog.pot
│ │ │ │ ├── 0.2.0-changelog.pot
│ │ │ │ ├── 0.3.0-changelog.pot
│ │ │ │ ├── 0.4.0-changelog.pot
│ │ │ │ ├── 0.5.0-changelog.pot
│ │ │ │ ├── 0.6.0-changelog.pot
│ │ │ │ ├── 0.7.0-changelog.pot
│ │ │ │ ├── 0.8.0-changelog.pot
│ │ │ │ └── 0.9.0-changelog.pot
│ │ │ ├── changelog.pot
│ │ │ ├── conduct.pot
│ │ │ ├── contributing/
│ │ │ │ ├── admonitions.pot
│ │ │ │ ├── development.pot
│ │ │ │ ├── docstrings.pot
│ │ │ │ ├── examples.pot
│ │ │ │ ├── internationalization.pot
│ │ │ │ ├── performance.pot
│ │ │ │ ├── references.pot
│ │ │ │ ├── testing.pot
│ │ │ │ └── typings.pot
│ │ │ ├── contributing.pot
│ │ │ ├── examples.pot
│ │ │ ├── faq/
│ │ │ │ ├── general.pot
│ │ │ │ ├── help.pot
│ │ │ │ ├── index.pot
│ │ │ │ ├── installation.pot
│ │ │ │ ├── internals.pot
│ │ │ │ └── opengl.pot
│ │ │ ├── guides/
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── deep_dive.pot
│ │ │ │ ├── index.pot
│ │ │ │ └── using_text.pot
│ │ │ ├── index.pot
│ │ │ ├── installation/
│ │ │ │ ├── docker.pot
│ │ │ │ ├── jupyter.pot
│ │ │ │ ├── linux.pot
│ │ │ │ ├── macos.pot
│ │ │ │ ├── troubleshooting.pot
│ │ │ │ ├── versions.pot
│ │ │ │ └── windows.pot
│ │ │ ├── installation.pot
│ │ │ ├── internals.pot
│ │ │ ├── plugins.pot
│ │ │ ├── reference/
│ │ │ │ ├── manim._config.logger_utils.JSONFormatter.pot
│ │ │ │ ├── manim._config.logger_utils.pot
│ │ │ │ ├── manim._config.pot
│ │ │ │ ├── manim._config.utils.ManimConfig.pot
│ │ │ │ ├── manim._config.utils.ManimFrame.pot
│ │ │ │ ├── manim._config.utils.pot
│ │ │ │ ├── manim.animation.animation.Animation.pot
│ │ │ │ ├── manim.animation.animation.Wait.pot
│ │ │ │ ├── manim.animation.animation.pot
│ │ │ │ ├── manim.animation.changing.AnimatedBoundary.pot
│ │ │ │ ├── manim.animation.changing.TracedPath.pot
│ │ │ │ ├── manim.animation.changing.pot
│ │ │ │ ├── manim.animation.composition.AnimationGroup.pot
│ │ │ │ ├── manim.animation.composition.LaggedStart.pot
│ │ │ │ ├── manim.animation.composition.LaggedStartMap.pot
│ │ │ │ ├── manim.animation.composition.Succession.pot
│ │ │ │ ├── manim.animation.composition.pot
│ │ │ │ ├── manim.animation.creation.AddTextLetterByLetter.pot
│ │ │ │ ├── manim.animation.creation.AddTextWordByWord.pot
│ │ │ │ ├── manim.animation.creation.Create.pot
│ │ │ │ ├── manim.animation.creation.DrawBorderThenFill.pot
│ │ │ │ ├── manim.animation.creation.ShowIncreasingSubsets.pot
│ │ │ │ ├── manim.animation.creation.ShowPartial.pot
│ │ │ │ ├── manim.animation.creation.ShowSubmobjectsOneByOne.pot
│ │ │ │ ├── manim.animation.creation.SpiralIn.pot
│ │ │ │ ├── manim.animation.creation.Uncreate.pot
│ │ │ │ ├── manim.animation.creation.Unwrite.pot
│ │ │ │ ├── manim.animation.creation.Write.pot
│ │ │ │ ├── manim.animation.creation.pot
│ │ │ │ ├── manim.animation.fading.FadeIn.pot
│ │ │ │ ├── manim.animation.fading.FadeOut.pot
│ │ │ │ ├── manim.animation.fading.pot
│ │ │ │ ├── manim.animation.growing.GrowArrow.pot
│ │ │ │ ├── manim.animation.growing.GrowFromCenter.pot
│ │ │ │ ├── manim.animation.growing.GrowFromEdge.pot
│ │ │ │ ├── manim.animation.growing.GrowFromPoint.pot
│ │ │ │ ├── manim.animation.growing.SpinInFromNothing.pot
│ │ │ │ ├── manim.animation.growing.pot
│ │ │ │ ├── manim.animation.indication.ApplyWave.pot
│ │ │ │ ├── manim.animation.indication.Circumscribe.pot
│ │ │ │ ├── manim.animation.indication.Flash.pot
│ │ │ │ ├── manim.animation.indication.FocusOn.pot
│ │ │ │ ├── manim.animation.indication.Indicate.pot
│ │ │ │ ├── manim.animation.indication.ShowCreationThenFadeOut.pot
│ │ │ │ ├── manim.animation.indication.ShowPassingFlash.pot
│ │ │ │ ├── manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth.pot
│ │ │ │ ├── manim.animation.indication.Wiggle.pot
│ │ │ │ ├── manim.animation.indication.pot
│ │ │ │ ├── manim.animation.movement.ComplexHomotopy.pot
│ │ │ │ ├── manim.animation.movement.Homotopy.pot
│ │ │ │ ├── manim.animation.movement.MoveAlongPath.pot
│ │ │ │ ├── manim.animation.movement.PhaseFlow.pot
│ │ │ │ ├── manim.animation.movement.SmoothedVectorizedHomotopy.pot
│ │ │ │ ├── manim.animation.movement.pot
│ │ │ │ ├── manim.animation.numbers.ChangeDecimalToValue.pot
│ │ │ │ ├── manim.animation.numbers.ChangingDecimal.pot
│ │ │ │ ├── manim.animation.numbers.pot
│ │ │ │ ├── manim.animation.rotation.Rotate.pot
│ │ │ │ ├── manim.animation.rotation.Rotating.pot
│ │ │ │ ├── manim.animation.rotation.pot
│ │ │ │ ├── manim.animation.specialized.Broadcast.pot
│ │ │ │ ├── manim.animation.specialized.pot
│ │ │ │ ├── manim.animation.speedmodifier.ChangeSpeed.pot
│ │ │ │ ├── manim.animation.speedmodifier.pot
│ │ │ │ ├── manim.animation.transform.ApplyComplexFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyMatrix.pot
│ │ │ │ ├── manim.animation.transform.ApplyMethod.pot
│ │ │ │ ├── manim.animation.transform.ApplyPointwiseFunction.pot
│ │ │ │ ├── manim.animation.transform.ApplyPointwiseFunctionToCenter.pot
│ │ │ │ ├── manim.animation.transform.ClockwiseTransform.pot
│ │ │ │ ├── manim.animation.transform.CounterclockwiseTransform.pot
│ │ │ │ ├── manim.animation.transform.CyclicReplace.pot
│ │ │ │ ├── manim.animation.transform.FadeToColor.pot
│ │ │ │ ├── manim.animation.transform.FadeTransform.pot
│ │ │ │ ├── manim.animation.transform.FadeTransformPieces.pot
│ │ │ │ ├── manim.animation.transform.MoveToTarget.pot
│ │ │ │ ├── manim.animation.transform.ReplacementTransform.pot
│ │ │ │ ├── manim.animation.transform.Restore.pot
│ │ │ │ ├── manim.animation.transform.ScaleInPlace.pot
│ │ │ │ ├── manim.animation.transform.ShrinkToCenter.pot
│ │ │ │ ├── manim.animation.transform.Swap.pot
│ │ │ │ ├── manim.animation.transform.Transform.pot
│ │ │ │ ├── manim.animation.transform.TransformAnimations.pot
│ │ │ │ ├── manim.animation.transform.TransformFromCopy.pot
│ │ │ │ ├── manim.animation.transform.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingAbstractBase.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingShapes.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.TransformMatchingTex.pot
│ │ │ │ ├── manim.animation.transform_matching_parts.pot
│ │ │ │ ├── manim.animation.update.MaintainPositionRelativeTo.pot
│ │ │ │ ├── manim.animation.update.UpdateFromAlphaFunc.pot
│ │ │ │ ├── manim.animation.update.UpdateFromFunc.pot
│ │ │ │ ├── manim.animation.update.pot
│ │ │ │ ├── manim.animation.updaters.mobject_update_utils.pot
│ │ │ │ ├── manim.animation.updaters.pot
│ │ │ │ ├── manim.animation.updaters.update.MaintainPositionRelativeTo.pot
│ │ │ │ ├── manim.animation.updaters.update.UpdateFromAlphaFunc.pot
│ │ │ │ ├── manim.animation.updaters.update.UpdateFromFunc.pot
│ │ │ │ ├── manim.animation.updaters.update.pot
│ │ │ │ ├── manim.camera.camera.BackgroundColoredVMobjectDisplayer.pot
│ │ │ │ ├── manim.camera.camera.Camera.pot
│ │ │ │ ├── manim.camera.camera.pot
│ │ │ │ ├── manim.camera.mapping_camera.MappingCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.OldMultiCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.SplitScreenCamera.pot
│ │ │ │ ├── manim.camera.mapping_camera.pot
│ │ │ │ ├── manim.camera.moving_camera.CameraFrame.pot
│ │ │ │ ├── manim.camera.moving_camera.MovingCamera.pot
│ │ │ │ ├── manim.camera.moving_camera.pot
│ │ │ │ ├── manim.camera.multi_camera.MultiCamera.pot
│ │ │ │ ├── manim.camera.multi_camera.pot
│ │ │ │ ├── manim.camera.three_d_camera.ThreeDCamera.pot
│ │ │ │ ├── manim.camera.three_d_camera.pot
│ │ │ │ ├── manim.constants.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Difference.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Exclusion.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Intersection.pot
│ │ │ │ ├── manim.mobject.boolean_ops.Union.pot
│ │ │ │ ├── manim.mobject.boolean_ops.pot
│ │ │ │ ├── manim.mobject.changing.AnimatedBoundary.pot
│ │ │ │ ├── manim.mobject.changing.TracedPath.pot
│ │ │ │ ├── manim.mobject.changing.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.Axes.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.ComplexPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.CoordinateSystem.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.NumberPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.PolarPlane.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.ThreeDAxes.pot
│ │ │ │ ├── manim.mobject.coordinate_systems.pot
│ │ │ │ ├── manim.mobject.frame.FullScreenFadeRectangle.pot
│ │ │ │ ├── manim.mobject.frame.FullScreenRectangle.pot
│ │ │ │ ├── manim.mobject.frame.PictureInPictureFrame.pot
│ │ │ │ ├── manim.mobject.frame.ScreenRectangle.pot
│ │ │ │ ├── manim.mobject.frame.pot
│ │ │ │ ├── manim.mobject.functions.FunctionGraph.pot
│ │ │ │ ├── manim.mobject.functions.ImplicitFunction.pot
│ │ │ │ ├── manim.mobject.functions.ParametricFunction.pot
│ │ │ │ ├── manim.mobject.functions.pot
│ │ │ │ ├── manim.mobject.geometry.Angle.pot
│ │ │ │ ├── manim.mobject.geometry.AnnotationDot.pot
│ │ │ │ ├── manim.mobject.geometry.AnnularSector.pot
│ │ │ │ ├── manim.mobject.geometry.Annulus.pot
│ │ │ │ ├── manim.mobject.geometry.ArcBetweenPoints.pot
│ │ │ │ ├── manim.mobject.geometry.ArcPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.ArcPolygonFromArcs.pot
│ │ │ │ ├── manim.mobject.geometry.Arrow.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowCircleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowCircleTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowSquareFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowSquareTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTriangleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.ArrowTriangleTip.pot
│ │ │ │ ├── manim.mobject.geometry.Circle.pot
│ │ │ │ ├── manim.mobject.geometry.CubicBezier.pot
│ │ │ │ ├── manim.mobject.geometry.CurvedArrow.pot
│ │ │ │ ├── manim.mobject.geometry.CurvedDoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.Cutout.pot
│ │ │ │ ├── manim.mobject.geometry.DashedLine.pot
│ │ │ │ ├── manim.mobject.geometry.Dot.pot
│ │ │ │ ├── manim.mobject.geometry.DoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.Elbow.pot
│ │ │ │ ├── manim.mobject.geometry.Ellipse.pot
│ │ │ │ ├── manim.mobject.geometry.LabeledDot.pot
│ │ │ │ ├── manim.mobject.geometry.Polygon.pot
│ │ │ │ ├── manim.mobject.geometry.Rectangle.pot
│ │ │ │ ├── manim.mobject.geometry.RegularPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.RegularPolygram.pot
│ │ │ │ ├── manim.mobject.geometry.RightAngle.pot
│ │ │ │ ├── manim.mobject.geometry.RoundedRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.Sector.pot
│ │ │ │ ├── manim.mobject.geometry.Square.pot
│ │ │ │ ├── manim.mobject.geometry.Star.pot
│ │ │ │ ├── manim.mobject.geometry.TangentLine.pot
│ │ │ │ ├── manim.mobject.geometry.TipableVMobject.pot
│ │ │ │ ├── manim.mobject.geometry.Triangle.pot
│ │ │ │ ├── manim.mobject.geometry.Vector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.AnnotationDot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.AnnularSector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Annulus.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Arc.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcBetweenPoints.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.arc.ArcPolygonFromArcs.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Circle.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CubicBezier.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CurvedArrow.pot
│ │ │ │ ├── manim.mobject.geometry.arc.CurvedDoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Dot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Ellipse.pot
│ │ │ │ ├── manim.mobject.geometry.arc.LabeledDot.pot
│ │ │ │ ├── manim.mobject.geometry.arc.Sector.pot
│ │ │ │ ├── manim.mobject.geometry.arc.TipableVMobject.pot
│ │ │ │ ├── manim.mobject.geometry.arc.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Difference.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Exclusion.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Intersection.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.Union.pot
│ │ │ │ ├── manim.mobject.geometry.boolean_ops.pot
│ │ │ │ ├── manim.mobject.geometry.line.Angle.pot
│ │ │ │ ├── manim.mobject.geometry.line.Arrow.pot
│ │ │ │ ├── manim.mobject.geometry.line.DashedLine.pot
│ │ │ │ ├── manim.mobject.geometry.line.DoubleArrow.pot
│ │ │ │ ├── manim.mobject.geometry.line.Elbow.pot
│ │ │ │ ├── manim.mobject.geometry.line.Line.pot
│ │ │ │ ├── manim.mobject.geometry.line.RightAngle.pot
│ │ │ │ ├── manim.mobject.geometry.line.TangentLine.pot
│ │ │ │ ├── manim.mobject.geometry.line.Vector.pot
│ │ │ │ ├── manim.mobject.geometry.line.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Cutout.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Polygon.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Polygram.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Rectangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RegularPolygon.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RegularPolygram.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.RoundedRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Square.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Star.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.Triangle.pot
│ │ │ │ ├── manim.mobject.geometry.polygram.pot
│ │ │ │ ├── manim.mobject.geometry.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.BackgroundRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.Cross.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.SurroundingRectangle.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.Underline.pot
│ │ │ │ ├── manim.mobject.geometry.shape_matchers.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowCircleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowCircleTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowSquareFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowSquareTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTriangleFilledTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.ArrowTriangleTip.pot
│ │ │ │ ├── manim.mobject.geometry.tips.pot
│ │ │ │ ├── manim.mobject.graph.Graph.pot
│ │ │ │ ├── manim.mobject.graph.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.Axes.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.ComplexPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.CoordinateSystem.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.NumberPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.PolarPlane.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.ThreeDAxes.pot
│ │ │ │ ├── manim.mobject.graphing.coordinate_systems.pot
│ │ │ │ ├── manim.mobject.graphing.functions.FunctionGraph.pot
│ │ │ │ ├── manim.mobject.graphing.functions.ImplicitFunction.pot
│ │ │ │ ├── manim.mobject.graphing.functions.ParametricFunction.pot
│ │ │ │ ├── manim.mobject.graphing.functions.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.NumberLine.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.UnitInterval.pot
│ │ │ │ ├── manim.mobject.graphing.number_line.pot
│ │ │ │ ├── manim.mobject.graphing.pot
│ │ │ │ ├── manim.mobject.graphing.probability.BarChart.pot
│ │ │ │ ├── manim.mobject.graphing.probability.SampleSpace.pot
│ │ │ │ ├── manim.mobject.graphing.probability.pot
│ │ │ │ ├── manim.mobject.graphing.scale.LinearBase.pot
│ │ │ │ ├── manim.mobject.graphing.scale.LogBase.pot
│ │ │ │ ├── manim.mobject.graphing.scale.pot
│ │ │ │ ├── manim.mobject.logo.ManimBanner.pot
│ │ │ │ ├── manim.mobject.logo.pot
│ │ │ │ ├── manim.mobject.matrix.DecimalMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.IntegerMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.Matrix.pot
│ │ │ │ ├── manim.mobject.matrix.MobjectMatrix.pot
│ │ │ │ ├── manim.mobject.matrix.pot
│ │ │ │ ├── manim.mobject.mobject.Group.pot
│ │ │ │ ├── manim.mobject.mobject.Mobject.pot
│ │ │ │ ├── manim.mobject.mobject.pot
│ │ │ │ ├── manim.mobject.mobject_update_utils.pot
│ │ │ │ ├── manim.mobject.number_line.NumberLine.pot
│ │ │ │ ├── manim.mobject.number_line.UnitInterval.pot
│ │ │ │ ├── manim.mobject.number_line.pot
│ │ │ │ ├── manim.mobject.numbers.DecimalNumber.pot
│ │ │ │ ├── manim.mobject.numbers.Integer.pot
│ │ │ │ ├── manim.mobject.numbers.Variable.pot
│ │ │ │ ├── manim.mobject.numbers.pot
│ │ │ │ ├── manim.mobject.polyhedra.Dodecahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Icosahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Octahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Polyhedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.Tetrahedron.pot
│ │ │ │ ├── manim.mobject.polyhedra.pot
│ │ │ │ ├── manim.mobject.probability.BarChart.pot
│ │ │ │ ├── manim.mobject.probability.SampleSpace.pot
│ │ │ │ ├── manim.mobject.probability.pot
│ │ │ │ ├── manim.mobject.shape_matchers.BackgroundRectangle.pot
│ │ │ │ ├── manim.mobject.shape_matchers.Cross.pot
│ │ │ │ ├── manim.mobject.shape_matchers.SurroundingRectangle.pot
│ │ │ │ ├── manim.mobject.shape_matchers.Underline.pot
│ │ │ │ ├── manim.mobject.shape_matchers.pot
│ │ │ │ ├── manim.mobject.svg.brace.ArcBrace.pot
│ │ │ │ ├── manim.mobject.svg.brace.Brace.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceBetweenPoints.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceLabel.pot
│ │ │ │ ├── manim.mobject.svg.brace.BraceText.pot
│ │ │ │ ├── manim.mobject.svg.brace.pot
│ │ │ │ ├── manim.mobject.svg.code_mobject.Code.pot
│ │ │ │ ├── manim.mobject.svg.code_mobject.pot
│ │ │ │ ├── manim.mobject.svg.pot
│ │ │ │ ├── manim.mobject.svg.style_utils.pot
│ │ │ │ ├── manim.mobject.svg.svg_mobject.SVGMobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_mobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_path.SVGPathMobject.pot
│ │ │ │ ├── manim.mobject.svg.svg_path.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.BulletedList.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.MathTex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.SingleStringMathTex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.Tex.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.TexSymbol.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.Title.pot
│ │ │ │ ├── manim.mobject.svg.tex_mobject.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.MarkupText.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.Paragraph.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.Text.pot
│ │ │ │ ├── manim.mobject.svg.text_mobject.pot
│ │ │ │ ├── manim.mobject.table.DecimalTable.pot
│ │ │ │ ├── manim.mobject.table.IntegerTable.pot
│ │ │ │ ├── manim.mobject.table.MathTable.pot
│ │ │ │ ├── manim.mobject.table.MobjectTable.pot
│ │ │ │ ├── manim.mobject.table.Table.pot
│ │ │ │ ├── manim.mobject.table.pot
│ │ │ │ ├── manim.mobject.text.code_mobject.Code.pot
│ │ │ │ ├── manim.mobject.text.code_mobject.pot
│ │ │ │ ├── manim.mobject.text.numbers.DecimalNumber.pot
│ │ │ │ ├── manim.mobject.text.numbers.Integer.pot
│ │ │ │ ├── manim.mobject.text.numbers.Variable.pot
│ │ │ │ ├── manim.mobject.text.numbers.pot
│ │ │ │ ├── manim.mobject.text.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.BulletedList.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.MathTex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.SingleStringMathTex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.Tex.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.TexSymbol.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.Title.pot
│ │ │ │ ├── manim.mobject.text.tex_mobject.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.MarkupText.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.Paragraph.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.Text.pot
│ │ │ │ ├── manim.mobject.text.text_mobject.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Dodecahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Icosahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Octahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Polyhedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.Tetrahedron.pot
│ │ │ │ ├── manim.mobject.three_d.polyhedra.pot
│ │ │ │ ├── manim.mobject.three_d.pot
│ │ │ │ ├── manim.mobject.three_d.three_d_utils.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Arrow3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cone.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cube.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Cylinder.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Dot3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Line3D.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Prism.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Sphere.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Surface.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.ThreeDVMobject.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.Torus.pot
│ │ │ │ ├── manim.mobject.three_d.three_dimensions.pot
│ │ │ │ ├── manim.mobject.three_d_utils.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Arrow3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cone.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cube.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Cylinder.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Dot3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Line3D.pot
│ │ │ │ ├── manim.mobject.three_dimensions.ParametricSurface.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Prism.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Sphere.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Surface.pot
│ │ │ │ ├── manim.mobject.three_dimensions.ThreeDVMobject.pot
│ │ │ │ ├── manim.mobject.three_dimensions.Torus.pot
│ │ │ │ ├── manim.mobject.three_dimensions.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.AbstractImageMobject.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.ImageMobject.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.ImageMobjectFromCamera.pot
│ │ │ │ ├── manim.mobject.types.image_mobject.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Mobject1D.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Mobject2D.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PGroup.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PMobject.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.Point.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.PointCloudDot.pot
│ │ │ │ ├── manim.mobject.types.point_cloud_mobject.pot
│ │ │ │ ├── manim.mobject.types.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.CurvesAsSubmobjects.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.DashedVMobject.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VDict.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VGroup.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VMobject.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.VectorizedPoint.pot
│ │ │ │ ├── manim.mobject.types.vectorized_mobject.pot
│ │ │ │ ├── manim.mobject.value_tracker.ComplexValueTracker.pot
│ │ │ │ ├── manim.mobject.value_tracker.ValueTracker.pot
│ │ │ │ ├── manim.mobject.value_tracker.pot
│ │ │ │ ├── manim.mobject.vector_field.ArrowVectorField.pot
│ │ │ │ ├── manim.mobject.vector_field.StreamLines.pot
│ │ │ │ ├── manim.mobject.vector_field.VectorField.pot
│ │ │ │ ├── manim.mobject.vector_field.pot
│ │ │ │ ├── manim.scene.moving_camera_scene.MovingCameraScene.pot
│ │ │ │ ├── manim.scene.moving_camera_scene.pot
│ │ │ │ ├── manim.scene.reconfigurable_scene.ReconfigurableScene.pot
│ │ │ │ ├── manim.scene.reconfigurable_scene.pot
│ │ │ │ ├── manim.scene.sample_space_scene.SampleSpaceScene.pot
│ │ │ │ ├── manim.scene.sample_space_scene.pot
│ │ │ │ ├── manim.scene.scene.RerunSceneHandler.pot
│ │ │ │ ├── manim.scene.scene.Scene.pot
│ │ │ │ ├── manim.scene.scene.pot
│ │ │ │ ├── manim.scene.scene_file_writer.SceneFileWriter.pot
│ │ │ │ ├── manim.scene.scene_file_writer.pot
│ │ │ │ ├── manim.scene.section.DefaultSectionType.pot
│ │ │ │ ├── manim.scene.section.Section.pot
│ │ │ │ ├── manim.scene.section.pot
│ │ │ │ ├── manim.scene.three_d_scene.SpecialThreeDScene.pot
│ │ │ │ ├── manim.scene.three_d_scene.ThreeDScene.pot
│ │ │ │ ├── manim.scene.three_d_scene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.LinearTransformationScene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.VectorScene.pot
│ │ │ │ ├── manim.scene.vector_space_scene.pot
│ │ │ │ ├── manim.scene.zoomed_scene.ZoomedScene.pot
│ │ │ │ ├── manim.scene.zoomed_scene.pot
│ │ │ │ ├── manim.utils.bezier.pot
│ │ │ │ ├── manim.utils.color.Colors.pot
│ │ │ │ ├── manim.utils.color.pot
│ │ │ │ ├── manim.utils.commands.pot
│ │ │ │ ├── manim.utils.config_ops.DictAsObject.pot
│ │ │ │ ├── manim.utils.config_ops.pot
│ │ │ │ ├── manim.utils.debug.pot
│ │ │ │ ├── manim.utils.deprecation.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.ManimDirective.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.pot
│ │ │ │ ├── manim.utils.docbuild.manim_directive.skip_manim_node.pot
│ │ │ │ ├── manim.utils.docbuild.pot
│ │ │ │ ├── manim.utils.hashing.pot
│ │ │ │ ├── manim.utils.images.pot
│ │ │ │ ├── manim.utils.ipython_magic.ManimMagic.pot
│ │ │ │ ├── manim.utils.ipython_magic.pot
│ │ │ │ ├── manim.utils.iterables.pot
│ │ │ │ ├── manim.utils.paths.pot
│ │ │ │ ├── manim.utils.rate_functions.pot
│ │ │ │ ├── manim.utils.scale.LinearBase.pot
│ │ │ │ ├── manim.utils.scale.LogBase.pot
│ │ │ │ ├── manim.utils.scale.pot
│ │ │ │ ├── manim.utils.simple_functions.pot
│ │ │ │ ├── manim.utils.sounds.pot
│ │ │ │ ├── manim.utils.space_ops.pot
│ │ │ │ ├── manim.utils.strings.pot
│ │ │ │ ├── manim.utils.tex.TexTemplate.pot
│ │ │ │ ├── manim.utils.tex.TexTemplateFromFile.pot
│ │ │ │ ├── manim.utils.tex.pot
│ │ │ │ ├── manim.utils.tex_file_writing.pot
│ │ │ │ ├── manim.utils.tex_templates.TexFontTemplates.pot
│ │ │ │ ├── manim.utils.tex_templates.TexTemplateLibrary.pot
│ │ │ │ ├── manim.utils.tex_templates.pot
│ │ │ │ ├── manim_directive.ManimDirective.pot
│ │ │ │ ├── manim_directive.pot
│ │ │ │ └── manim_directive.skip_manim_node.pot
│ │ │ ├── reference.pot
│ │ │ ├── reference_index/
│ │ │ │ ├── animations.pot
│ │ │ │ ├── cameras.pot
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── mobjects.pot
│ │ │ │ ├── scenes.pot
│ │ │ │ └── utilities_misc.pot
│ │ │ ├── reporting_bugs.pot
│ │ │ ├── tutorials/
│ │ │ │ ├── a_deeper_look.pot
│ │ │ │ ├── building_blocks.pot
│ │ │ │ ├── configuration.pot
│ │ │ │ ├── index.pot
│ │ │ │ ├── output_and_config.pot
│ │ │ │ ├── quickstart.pot
│ │ │ │ └── using_text.pot
│ │ │ ├── tutorials.pot
│ │ │ └── tutorials_guides.pot
│ │ ├── hi/
│ │ │ └── LC_MESSAGES/
│ │ │ └── index.po
│ │ ├── pt/
│ │ │ └── LC_MESSAGES/
│ │ │ └── index.po
│ │ ├── readyForTranslation
│ │ ├── stripUntranslatable.awk
│ │ ├── stripUntranslatable.sh
│ │ └── sv/
│ │ └── LC_MESSAGES/
│ │ ├── contributing.po
│ │ ├── examples.po
│ │ ├── index.po
│ │ ├── installation.po
│ │ ├── plugins.po
│ │ ├── reference.po
│ │ ├── reporting_bugs.po
│ │ ├── tutorials/
│ │ │ ├── building_blocks.po
│ │ │ └── quickstart.po
│ │ └── tutorials.po
│ ├── make.bat
│ ├── requirements.txt
│ ├── rtd-requirements.txt
│ ├── skip-manim
│ └── source/
│ ├── _static/
│ │ ├── custom.css
│ │ ├── manim-binder.min.js.LICENSE.txt
│ │ └── responsiveSvg.js
│ ├── _templates/
│ │ ├── autosummary/
│ │ │ ├── class.rst
│ │ │ └── module.rst
│ │ └── logo-text.html
│ ├── changelog/
│ │ ├── 0.1.0-changelog.rst
│ │ ├── 0.1.1-changelog.rst
│ │ ├── 0.10.0-changelog.rst
│ │ ├── 0.11.0-changelog.rst
│ │ ├── 0.12.0-changelog.rst
│ │ ├── 0.13.0-changelog.rst
│ │ ├── 0.13.1-changelog.rst
│ │ ├── 0.14.0-changelog.rst
│ │ ├── 0.15.0-changelog.rst
│ │ ├── 0.15.1-changelog.rst
│ │ ├── 0.15.2-changelog.rst
│ │ ├── 0.16.0-changelog.rst
│ │ ├── 0.17.0-changelog.rst
│ │ ├── 0.17.1-changelog.rst
│ │ ├── 0.17.2-changelog.rst
│ │ ├── 0.17.3-changelog.rst
│ │ ├── 0.18.0-changelog.rst
│ │ ├── 0.18.0.post0-changelog.rst
│ │ ├── 0.18.1-changelog.md
│ │ ├── 0.19.0-changelog.rst
│ │ ├── 0.19.1-changelog.md
│ │ ├── 0.19.2-changelog.md
│ │ ├── 0.2.0-changelog.rst
│ │ ├── 0.20.0-changelog.md
│ │ ├── 0.20.1-changelog.md
│ │ ├── 0.3.0-changelog.rst
│ │ ├── 0.4.0-changelog.rst
│ │ ├── 0.5.0-changelog.rst
│ │ ├── 0.6.0-changelog.rst
│ │ ├── 0.7.0-changelog.rst
│ │ ├── 0.8.0-changelog.rst
│ │ └── 0.9.0-changelog.rst
│ ├── changelog.rst
│ ├── conf.py
│ ├── contributing/
│ │ ├── development.md
│ │ ├── docs/
│ │ │ ├── admonitions.rst
│ │ │ ├── docstrings.rst
│ │ │ ├── examples.rst
│ │ │ ├── references.rst
│ │ │ ├── types.rst
│ │ │ └── typings.rst
│ │ ├── docs.rst
│ │ ├── internationalization.rst
│ │ ├── performance.rst
│ │ └── testing.rst
│ ├── contributing.rst
│ ├── examples.rst
│ ├── faq/
│ │ ├── general.md
│ │ ├── help.md
│ │ ├── index.rst
│ │ ├── installation.md
│ │ ├── internals.md
│ │ └── opengl.md
│ ├── guides/
│ │ ├── add_voiceovers.rst
│ │ ├── configuration.rst
│ │ ├── deep_dive.rst
│ │ ├── index.rst
│ │ └── using_text.rst
│ ├── index.rst
│ ├── installation/
│ │ ├── conda.rst
│ │ ├── docker.rst
│ │ ├── jupyter.rst
│ │ └── uv.md
│ ├── installation.rst
│ ├── plugins.rst
│ ├── reference.rst
│ ├── reference_index/
│ │ ├── animations.rst
│ │ ├── cameras.rst
│ │ ├── configuration.rst
│ │ ├── mobjects.rst
│ │ ├── scenes.rst
│ │ └── utilities_misc.rst
│ ├── robots.txt
│ ├── tutorials/
│ │ ├── building_blocks.rst
│ │ ├── index.rst
│ │ ├── output_and_config.rst
│ │ └── quickstart.rst
│ └── tutorials_guides.rst
├── example_scenes/
│ ├── advanced_tex_fonts.py
│ ├── basic.py
│ ├── custom_template.tex
│ ├── customtex.py
│ ├── manim.cfg
│ ├── manim_jupyter_example.ipynb
│ └── opengl.py
├── lgtm.yml
├── manim/
│ ├── __init__.py
│ ├── __main__.py
│ ├── _config/
│ │ ├── __init__.py
│ │ ├── cli_colors.py
│ │ ├── default.cfg
│ │ ├── logger_utils.py
│ │ └── utils.py
│ ├── animation/
│ │ ├── __init__.py
│ │ ├── animation.py
│ │ ├── changing.py
│ │ ├── composition.py
│ │ ├── creation.py
│ │ ├── fading.py
│ │ ├── growing.py
│ │ ├── indication.py
│ │ ├── movement.py
│ │ ├── numbers.py
│ │ ├── rotation.py
│ │ ├── specialized.py
│ │ ├── speedmodifier.py
│ │ ├── transform.py
│ │ ├── transform_matching_parts.py
│ │ └── updaters/
│ │ ├── __init__.py
│ │ ├── mobject_update_utils.py
│ │ └── update.py
│ ├── camera/
│ │ ├── __init__.py
│ │ ├── camera.py
│ │ ├── mapping_camera.py
│ │ ├── moving_camera.py
│ │ ├── multi_camera.py
│ │ └── three_d_camera.py
│ ├── cli/
│ │ ├── __init__.py
│ │ ├── cfg/
│ │ │ ├── __init__.py
│ │ │ └── group.py
│ │ ├── checkhealth/
│ │ │ ├── __init__.py
│ │ │ ├── checks.py
│ │ │ └── commands.py
│ │ ├── default_group.py
│ │ ├── init/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ ├── plugins/
│ │ │ ├── __init__.py
│ │ │ └── commands.py
│ │ └── render/
│ │ ├── __init__.py
│ │ ├── commands.py
│ │ ├── ease_of_access_options.py
│ │ ├── global_options.py
│ │ ├── output_options.py
│ │ └── render_options.py
│ ├── constants.py
│ ├── data_structures.py
│ ├── mobject/
│ │ ├── __init__.py
│ │ ├── frame.py
│ │ ├── geometry/
│ │ │ ├── __init__.py
│ │ │ ├── arc.py
│ │ │ ├── boolean_ops.py
│ │ │ ├── labeled.py
│ │ │ ├── line.py
│ │ │ ├── polygram.py
│ │ │ ├── shape_matchers.py
│ │ │ └── tips.py
│ │ ├── graph.py
│ │ ├── graphing/
│ │ │ ├── __init__.py
│ │ │ ├── coordinate_systems.py
│ │ │ ├── functions.py
│ │ │ ├── number_line.py
│ │ │ ├── probability.py
│ │ │ └── scale.py
│ │ ├── logo.py
│ │ ├── matrix.py
│ │ ├── mobject.py
│ │ ├── opengl/
│ │ │ ├── __init__.py
│ │ │ ├── dot_cloud.py
│ │ │ ├── opengl_compatibility.py
│ │ │ ├── opengl_geometry.py
│ │ │ ├── opengl_image_mobject.py
│ │ │ ├── opengl_mobject.py
│ │ │ ├── opengl_point_cloud_mobject.py
│ │ │ ├── opengl_surface.py
│ │ │ ├── opengl_three_dimensions.py
│ │ │ └── opengl_vectorized_mobject.py
│ │ ├── svg/
│ │ │ ├── __init__.py
│ │ │ ├── brace.py
│ │ │ └── svg_mobject.py
│ │ ├── table.py
│ │ ├── text/
│ │ │ ├── __init__.py
│ │ │ ├── code_mobject.py
│ │ │ ├── numbers.py
│ │ │ ├── tex_mobject.py
│ │ │ └── text_mobject.py
│ │ ├── three_d/
│ │ │ ├── __init__.py
│ │ │ ├── polyhedra.py
│ │ │ ├── three_d_utils.py
│ │ │ └── three_dimensions.py
│ │ ├── types/
│ │ │ ├── __init__.py
│ │ │ ├── image_mobject.py
│ │ │ ├── point_cloud_mobject.py
│ │ │ └── vectorized_mobject.py
│ │ ├── utils.py
│ │ ├── value_tracker.py
│ │ └── vector_field.py
│ ├── opengl/
│ │ └── __init__.py
│ ├── plugins/
│ │ ├── __init__.py
│ │ └── plugins_flags.py
│ ├── py.typed
│ ├── renderer/
│ │ ├── __init__.py
│ │ ├── cairo_renderer.py
│ │ ├── opengl_renderer.py
│ │ ├── opengl_renderer_window.py
│ │ ├── shader.py
│ │ ├── shader_wrapper.py
│ │ ├── shaders/
│ │ │ ├── default/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── design.frag
│ │ │ ├── design_2.frag
│ │ │ ├── design_3.frag
│ │ │ ├── image/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── include/
│ │ │ │ ├── NOTE.md
│ │ │ │ ├── add_light.glsl
│ │ │ │ ├── camera_uniform_declarations.glsl
│ │ │ │ ├── finalize_color.glsl
│ │ │ │ ├── get_gl_Position.glsl
│ │ │ │ ├── get_rotated_surface_unit_normal_vector.glsl
│ │ │ │ ├── get_unit_normal.glsl
│ │ │ │ ├── position_point_into_frame.glsl
│ │ │ │ ├── quadratic_bezier_distance.glsl
│ │ │ │ └── quadratic_bezier_geometry_functions.glsl
│ │ │ ├── manim_coords/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── quadratic_bezier_fill/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── quadratic_bezier_stroke/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── simple_vert.glsl
│ │ │ ├── surface/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── test/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── textured_surface/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── true_dot/
│ │ │ │ ├── frag.glsl
│ │ │ │ ├── geom.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── vectorized_mobject_fill/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ ├── vectorized_mobject_stroke/
│ │ │ │ ├── frag.glsl
│ │ │ │ └── vert.glsl
│ │ │ └── vertex_colors/
│ │ │ ├── frag.glsl
│ │ │ └── vert.glsl
│ │ └── vectorized_mobject_rendering.py
│ ├── scene/
│ │ ├── __init__.py
│ │ ├── moving_camera_scene.py
│ │ ├── scene.py
│ │ ├── scene_file_writer.py
│ │ ├── section.py
│ │ ├── three_d_scene.py
│ │ ├── vector_space_scene.py
│ │ └── zoomed_scene.py
│ ├── templates/
│ │ ├── Axes.mtp
│ │ ├── Default.mtp
│ │ ├── MovingCamera.mtp
│ │ └── template.cfg
│ ├── typing.py
│ └── utils/
│ ├── __init__.py
│ ├── bezier.py
│ ├── caching.py
│ ├── color/
│ │ ├── AS2700.py
│ │ ├── BS381.py
│ │ ├── DVIPSNAMES.py
│ │ ├── SVGNAMES.py
│ │ ├── X11.py
│ │ ├── XKCD.py
│ │ ├── __init__.py
│ │ ├── core.py
│ │ └── manim_colors.py
│ ├── commands.py
│ ├── config_ops.py
│ ├── debug.py
│ ├── deprecation.py
│ ├── docbuild/
│ │ ├── __init__.py
│ │ ├── autoaliasattr_directive.py
│ │ ├── autocolor_directive.py
│ │ ├── manim_directive.py
│ │ └── module_parsing.py
│ ├── exceptions.py
│ ├── family.py
│ ├── family_ops.py
│ ├── file_ops.py
│ ├── hashing.py
│ ├── images.py
│ ├── ipython_magic.py
│ ├── iterables.py
│ ├── module_ops.py
│ ├── opengl.py
│ ├── parameter_parsing.py
│ ├── paths.py
│ ├── polylabel.py
│ ├── qhull.py
│ ├── rate_functions.py
│ ├── simple_functions.py
│ ├── sounds.py
│ ├── space_ops.py
│ ├── testing/
│ │ ├── __init__.py
│ │ ├── _frames_testers.py
│ │ ├── _show_diff.py
│ │ ├── _test_class_makers.py
│ │ ├── config_graphical_tests_monoframe.cfg
│ │ ├── config_graphical_tests_multiframes.cfg
│ │ └── frames_comparison.py
│ ├── tex.py
│ ├── tex_file_writing.py
│ ├── tex_templates.py
│ └── unit.py
├── mypy.ini
├── pyproject.toml
├── scripts/
│ ├── TEMPLATE.cff
│ ├── extract_frames.py
│ ├── make_and_open_docs.py
│ ├── release.py
│ └── template_docsting_with_example.py
└── tests/
├── __init__.py
├── assert_utils.py
├── conftest.py
├── control_data/
│ ├── logs_data/
│ │ ├── BasicSceneLoggingTest.txt
│ │ └── bad_tex_scene_BadTex.txt
│ └── videos_data/
│ ├── InputFileViaCfg.json
│ ├── SceneWithDisabledSections.json
│ ├── SceneWithEnabledSections.json
│ ├── SceneWithMultipleCallsWithNFlag.json
│ ├── SceneWithMultiplePlayCallsWithNFlag.json
│ ├── SceneWithMultipleWaitCallsWithNFlag.json
│ ├── SceneWithSections.json
│ ├── SceneWithSkipAnimations.json
│ ├── SquareToCircleWithDefaultValues.json
│ └── SquareToCircleWithlFlag.json
├── helpers/
│ ├── __init__.py
│ ├── graphical_units.py
│ ├── path_utils.py
│ └── video_utils.py
├── interface/
│ └── test_commands.py
├── miscellaneous/
│ └── test_version.py
├── module/
│ ├── animation/
│ │ ├── test_animate.py
│ │ ├── test_animation.py
│ │ ├── test_composition.py
│ │ ├── test_creation.py
│ │ ├── test_override_animation.py
│ │ ├── test_transform.py
│ │ └── test_updaters.py
│ ├── mobject/
│ │ ├── geometry/
│ │ │ └── test_unit_geometry.py
│ │ ├── graphing/
│ │ │ ├── test_axes_shift.py
│ │ │ ├── test_coordinate_system.py
│ │ │ ├── test_number_line.py
│ │ │ └── test_ticks.py
│ │ ├── mobject/
│ │ │ ├── test_copy.py
│ │ │ ├── test_family.py
│ │ │ ├── test_get_set.py
│ │ │ ├── test_mobject.py
│ │ │ ├── test_opengl_metaclass.py
│ │ │ └── test_set_attr.py
│ │ ├── svg/
│ │ │ └── test_svg_mobject.py
│ │ ├── test_boolean_ops.py
│ │ ├── test_graph.py
│ │ ├── test_image.py
│ │ ├── test_matrix.py
│ │ ├── test_table.py
│ │ ├── test_value_tracker.py
│ │ ├── text/
│ │ │ ├── test_markup.py
│ │ │ ├── test_numbers.py
│ │ │ ├── test_texmobject.py
│ │ │ └── test_text_mobject.py
│ │ └── types/
│ │ └── vectorized_mobject/
│ │ ├── test_dashed_vmobject.py
│ │ ├── test_stroke.py
│ │ └── test_vectorized_mobject.py
│ ├── scene/
│ │ ├── test_auto_zoom.py
│ │ ├── test_scene.py
│ │ ├── test_sound.py
│ │ └── test_threed_scene.py
│ └── utils/
│ ├── _split_matrices.py
│ ├── _subdivision_matrices.py
│ ├── test_bezier.py
│ ├── test_color.py
│ ├── test_deprecation.py
│ ├── test_file_ops.py
│ ├── test_hashing.py
│ ├── test_manim_color.py
│ ├── test_space_ops.py
│ ├── test_tex.py
│ └── test_units.py
├── opengl/
│ ├── __init__.py
│ ├── control_data/
│ │ └── coordinate_system_opengl/
│ │ ├── gradient_line_graph_x_axis_using_opengl_renderer[None].npz
│ │ └── gradient_line_graph_y_axis_using_opengl_renderer[None].npz
│ ├── test_animate_opengl.py
│ ├── test_axes_shift_opengl.py
│ ├── test_color_opengl.py
│ ├── test_composition_opengl.py
│ ├── test_config_opengl.py
│ ├── test_coordinate_system_opengl.py
│ ├── test_copy_opengl.py
│ ├── test_family_opengl.py
│ ├── test_graph_opengl.py
│ ├── test_ipython_magic_opengl.py
│ ├── test_markup_opengl.py
│ ├── test_number_line_opengl.py
│ ├── test_numbers_opengl.py
│ ├── test_opengl_mobject.py
│ ├── test_opengl_surface.py
│ ├── test_opengl_vectorized_mobject.py
│ ├── test_override_animation_opengl.py
│ ├── test_scene_opengl.py
│ ├── test_sound_opengl.py
│ ├── test_stroke_opengl.py
│ ├── test_svg_mobject_opengl.py
│ ├── test_texmobject_opengl.py
│ ├── test_text_mobject_opengl.py
│ ├── test_ticks_opengl.py
│ ├── test_unit_geometry_opengl.py
│ └── test_value_tracker_opengl.py
├── standard_config.cfg
├── template_generate_graphical_units_data.py
├── test_camera.py
├── test_code_mobject.py
├── test_config.py
├── test_graphical_units/
│ ├── __init__.py
│ ├── conftest.py
│ ├── control_data/
│ │ ├── boolean_ops/
│ │ │ ├── difference.npz
│ │ │ ├── exclusion.npz
│ │ │ ├── intersection.npz
│ │ │ ├── intersection_3_mobjects.npz
│ │ │ └── union.npz
│ │ ├── brace/
│ │ │ ├── arcBrace.npz
│ │ │ ├── braceTip.npz
│ │ │ └── brace_sharpness.npz
│ │ ├── composition/
│ │ │ ├── animationgroup_is_passing_remover_to_animations.npz
│ │ │ └── animationgroup_is_passing_remover_to_nested_animationgroups.npz
│ │ ├── coordinate_system/
│ │ │ ├── gradient_line_graph_x_axis.npz
│ │ │ ├── gradient_line_graph_y_axis.npz
│ │ │ ├── implicit_graph.npz
│ │ │ ├── line_graph.npz
│ │ │ ├── number_plane.npz
│ │ │ ├── number_plane_log.npz
│ │ │ ├── plot_log_x_axis.npz
│ │ │ ├── plot_log_x_axis_vectorized.npz
│ │ │ ├── plot_surface.npz
│ │ │ └── plot_surface_colorscale.npz
│ │ ├── coordinate_systems/
│ │ │ └── NumberPlaneTest.npz
│ │ ├── creation/
│ │ │ ├── DrawBorderThenFill.npz
│ │ │ ├── FadeIn.npz
│ │ │ ├── FadeOut.npz
│ │ │ ├── GrowFromCenter.npz
│ │ │ ├── GrowFromEdge.npz
│ │ │ ├── GrowFromPoint.npz
│ │ │ ├── ShrinkToCenter.npz
│ │ │ ├── SpinInFromNothing.npz
│ │ │ ├── SpiralIn.npz
│ │ │ ├── bring_to_back_introducer.npz
│ │ │ ├── create.npz
│ │ │ ├── uncreate.npz
│ │ │ ├── uncreate_rate_func.npz
│ │ │ └── z_index_introducer.npz
│ │ ├── functions/
│ │ │ ├── FunctionGraph.npz
│ │ │ └── ImplicitFunction.npz
│ │ ├── geometry/
│ │ │ ├── Angle.npz
│ │ │ ├── AngledArrowTip.npz
│ │ │ ├── AnnotationDot.npz
│ │ │ ├── AnnularSector.npz
│ │ │ ├── Annulus.npz
│ │ │ ├── Arc.npz
│ │ │ ├── ArcBetweenPoints.npz
│ │ │ ├── Arrange.npz
│ │ │ ├── Circle.npz
│ │ │ ├── CirclePoints.npz
│ │ │ ├── ConvexHull.npz
│ │ │ ├── Coordinates.npz
│ │ │ ├── CurvedArrow.npz
│ │ │ ├── CurvedArrowCustomTip.npz
│ │ │ ├── CustomDoubleArrow.npz
│ │ │ ├── DashedVMobject.npz
│ │ │ ├── DashedVMobjectTest.npz
│ │ │ ├── Dot.npz
│ │ │ ├── DoubleArrow.npz
│ │ │ ├── Elbow.npz
│ │ │ ├── Ellipse.npz
│ │ │ ├── LabeledArrow.npz
│ │ │ ├── LabeledLine.npz
│ │ │ ├── LabeledPolygram.npz
│ │ │ ├── Line.npz
│ │ │ ├── Polygon.npz
│ │ │ ├── Polygram.npz
│ │ │ ├── Rectangle.npz
│ │ │ ├── RegularPolygram.npz
│ │ │ ├── RightAngle.npz
│ │ │ ├── RoundedRectangle.npz
│ │ │ ├── Sector.npz
│ │ │ ├── Star.npz
│ │ │ ├── Vector.npz
│ │ │ ├── ZIndex.npz
│ │ │ ├── negative_z_index_AnimationGroup.npz
│ │ │ ├── negative_z_index_LaggedStart.npz
│ │ │ ├── nested_animation_groups_with_negative_z_index.npz
│ │ │ └── three_points_Angle.npz
│ │ ├── img_and_svg/
│ │ │ ├── Arcs01.npz
│ │ │ ├── Arcs02.npz
│ │ │ ├── BrachistochroneCurve.npz
│ │ │ ├── ContiguousUSMap.npz
│ │ │ ├── CubicAndLineto.npz
│ │ │ ├── CubicPath.npz
│ │ │ ├── DesmosGraph1.npz
│ │ │ ├── HalfEllipse.npz
│ │ │ ├── Heart.npz
│ │ │ ├── ImageInterpolation.npz
│ │ │ ├── ImageMobject.npz
│ │ │ ├── Inheritance.npz
│ │ │ ├── Line.npz
│ │ │ ├── ManimLogo.npz
│ │ │ ├── MatrixTransform.npz
│ │ │ ├── MultiPartPath.npz
│ │ │ ├── MultipleTransform.npz
│ │ │ ├── Penrose.npz
│ │ │ ├── PixelizedText.npz
│ │ │ ├── QuadraticPath.npz
│ │ │ ├── Rhomboid.npz
│ │ │ ├── RotateTransform.npz
│ │ │ ├── ScaleTransform.npz
│ │ │ ├── SingleUSState.npz
│ │ │ ├── SkewXTransform.npz
│ │ │ ├── SkewYTransform.npz
│ │ │ ├── SmoothCurves.npz
│ │ │ ├── TranslateTransform.npz
│ │ │ ├── UKFlag.npz
│ │ │ ├── UseTagInheritance.npz
│ │ │ ├── VideoIcon.npz
│ │ │ ├── WatchTheDecimals.npz
│ │ │ ├── WeightSVG.npz
│ │ │ └── path_multiple_moves.npz
│ │ ├── indication/
│ │ │ ├── ApplyWave.npz
│ │ │ ├── Circumscribe.npz
│ │ │ ├── Flash.npz
│ │ │ ├── FocusOn.npz
│ │ │ ├── Indicate.npz
│ │ │ ├── ShowPassingFlash.npz
│ │ │ └── Wiggle.npz
│ │ ├── logo/
│ │ │ └── banner.npz
│ │ ├── mobjects/
│ │ │ ├── PointCloudDot.npz
│ │ │ ├── become.npz
│ │ │ ├── become_no_color_linking.npz
│ │ │ ├── match_style.npz
│ │ │ ├── vmobject_cap_styles.npz
│ │ │ └── vmobject_joint_types.npz
│ │ ├── modifier_methods/
│ │ │ ├── Gradient.npz
│ │ │ └── GradientRotation.npz
│ │ ├── movements/
│ │ │ ├── Homotopy.npz
│ │ │ ├── MoveAlongPath.npz
│ │ │ ├── MoveTo.npz
│ │ │ ├── PhaseFlow.npz
│ │ │ ├── Rotate.npz
│ │ │ └── Shift.npz
│ │ ├── numbers/
│ │ │ └── set_value_with_updaters.npz
│ │ ├── opengl/
│ │ │ ├── Circle.npz
│ │ │ └── FixedMobjects3D.npz
│ │ ├── plot/
│ │ │ ├── PlotFunctions.npz
│ │ │ ├── axes.npz
│ │ │ ├── axis_tip_custom_width_height.npz
│ │ │ ├── axis_tip_default_width_height.npz
│ │ │ ├── custom_coordinates.npz
│ │ │ ├── get_area.npz
│ │ │ ├── get_area_with_boundary_and_few_plot_points.npz
│ │ │ ├── get_area_with_riemann_rectangles.npz
│ │ │ ├── get_axis_labels.npz
│ │ │ ├── get_graph_label.npz
│ │ │ ├── get_lines_to_point.npz
│ │ │ ├── get_riemann_rectangles_use_vectorized[False].npz
│ │ │ ├── get_riemann_rectangles_use_vectorized[True].npz
│ │ │ ├── get_x_axis_label.npz
│ │ │ ├── get_y_axis_label.npz
│ │ │ ├── get_z_axis_label.npz
│ │ │ ├── log_scaling_graph.npz
│ │ │ ├── plot_derivative_graph_use_vectorized[False].npz
│ │ │ ├── plot_derivative_graph_use_vectorized[True].npz
│ │ │ ├── plot_functions_use_vectorized[False].npz
│ │ │ ├── plot_functions_use_vectorized[True].npz
│ │ │ ├── plot_line_graph.npz
│ │ │ ├── plot_use_vectorized[False].npz
│ │ │ ├── plot_use_vectorized[True].npz
│ │ │ ├── polar_graph.npz
│ │ │ └── t_label.npz
│ │ ├── polyhedra/
│ │ │ ├── ConvexHull3D.npz
│ │ │ ├── Dodecahedron.npz
│ │ │ ├── Icosahedron.npz
│ │ │ ├── Octahedron.npz
│ │ │ └── Tetrahedron.npz
│ │ ├── probability/
│ │ │ ├── advanced_customization.npz
│ │ │ ├── change_bar_values_negative.npz
│ │ │ ├── change_bar_values_some_vals.npz
│ │ │ ├── default_chart.npz
│ │ │ ├── get_bar_labels.npz
│ │ │ ├── label_constructor.npz
│ │ │ └── negative_values.npz
│ │ ├── specialized/
│ │ │ └── Broadcast.npz
│ │ ├── speed/
│ │ │ └── SpeedModifier.npz
│ │ ├── tables/
│ │ │ ├── DecimalTable.npz
│ │ │ ├── IntegerTable.npz
│ │ │ ├── MathTable.npz
│ │ │ ├── MobjectTable.npz
│ │ │ └── Table.npz
│ │ ├── tex_mobject/
│ │ │ ├── color_inheritance.npz
│ │ │ └── set_opacity_by_tex.npz
│ │ ├── threed/
│ │ │ ├── AddFixedInFrameMobjects.npz
│ │ │ ├── AmbientCameraMove.npz
│ │ │ ├── Arrow3D.npz
│ │ │ ├── Axes.npz
│ │ │ ├── CameraMove.npz
│ │ │ ├── CameraMoveAxes.npz
│ │ │ ├── Cone.npz
│ │ │ ├── Cube.npz
│ │ │ ├── Cylinder.npz
│ │ │ ├── Dot3D.npz
│ │ │ ├── Line3D.npz
│ │ │ ├── MovingVertices.npz
│ │ │ ├── Sphere.npz
│ │ │ ├── SurfaceColorscale.npz
│ │ │ ├── Torus.npz
│ │ │ └── Y_Direction.npz
│ │ ├── transform/
│ │ │ ├── AnimationBuilder.npz
│ │ │ ├── ApplyComplexFunction.npz
│ │ │ ├── ApplyFunction.npz
│ │ │ ├── ApplyMatrix.npz
│ │ │ ├── ApplyPointwiseFunction.npz
│ │ │ ├── ClockwiseTransform.npz
│ │ │ ├── CounterclockwiseTransform.npz
│ │ │ ├── CyclicReplace.npz
│ │ │ ├── FadeInAndOut.npz
│ │ │ ├── FadeToColort.npz
│ │ │ ├── FadeTransform.npz
│ │ │ ├── FadeTransformPieces.npz
│ │ │ ├── FadeTransform_TargetIsEmpty_FadesOutInPlace.npz
│ │ │ ├── FullRotation.npz
│ │ │ ├── MatchPointsScene.npz
│ │ │ ├── MoveToTarget.npz
│ │ │ ├── ReplacementTransform.npz
│ │ │ ├── Restore.npz
│ │ │ ├── ScaleInPlace.npz
│ │ │ ├── ShrinkToCenter.npz
│ │ │ ├── Transform.npz
│ │ │ ├── TransformFromCopy.npz
│ │ │ ├── TransformWithConflictingPaths.npz
│ │ │ ├── TransformWithPathArcCenters.npz
│ │ │ └── TransformWithPathFunc.npz
│ │ ├── transform_matching_parts/
│ │ │ ├── TransformMatchingDisplaysCorrect.npz
│ │ │ ├── TransformMatchingLeavesOneObject.npz
│ │ │ ├── TransformMatchingTex.npz
│ │ │ ├── TransformMatchingTex_FadeTransformMismatches.npz
│ │ │ ├── TransformMatchingTex_FadeTransformMismatches_NothingToFade.npz
│ │ │ └── TransformMatchingTex_TransformMismatches.npz
│ │ ├── updaters/
│ │ │ ├── LastFrameWhenCleared.npz
│ │ │ ├── UpdateSceneDuringAnimation.npz
│ │ │ ├── Updater.npz
│ │ │ └── ValueTracker.npz
│ │ ├── utils/
│ │ │ └── pixel_error_threshold.npz
│ │ └── vector_scene/
│ │ └── vector_to_coords.npz
│ ├── test_animation.py
│ ├── test_axes.py
│ ├── test_banner.py
│ ├── test_boolops.py
│ ├── test_brace.py
│ ├── test_composition.py
│ ├── test_coordinate_systems.py
│ ├── test_creation.py
│ ├── test_functions.py
│ ├── test_geometry.py
│ ├── test_img_and_svg.py
│ ├── test_indication.py
│ ├── test_mobjects.py
│ ├── test_modifier_methods.py
│ ├── test_movements.py
│ ├── test_numbers.py
│ ├── test_opengl.py
│ ├── test_polyhedra.py
│ ├── test_probability.py
│ ├── test_specialized.py
│ ├── test_speed.py
│ ├── test_tables.py
│ ├── test_tex_mobject.py
│ ├── test_text.py
│ ├── test_threed.py
│ ├── test_transform.py
│ ├── test_transform_matching_parts.py
│ ├── test_updaters.py
│ ├── test_utils.py
│ └── test_vector_scene.py
├── test_ipython_magic.py
├── test_linear_transformation_scene.py
├── test_logging/
│ ├── __init__.py
│ ├── bad_tex_scene.py
│ ├── basic_scenes_error.py
│ ├── basic_scenes_square_to_circle.py
│ ├── basic_scenes_write_stuff.py
│ └── test_logging.py
├── test_plugins/
│ ├── __init__.py
│ ├── simple_scenes.py
│ └── test_plugins.py
├── test_scene_rendering/
│ ├── __init__.py
│ ├── conftest.py
│ ├── infallible_scenes.py
│ ├── opengl/
│ │ ├── __init__.py
│ │ ├── test_caching_related_opengl.py
│ │ ├── test_cli_flags_opengl.py
│ │ ├── test_opengl_renderer.py
│ │ └── test_play_logic_opengl.py
│ ├── simple_scenes.py
│ ├── test_caching_related.py
│ ├── test_cairo_renderer.py
│ ├── test_cli_flags.py
│ ├── test_file_writer.py
│ ├── test_play_logic.py
│ └── test_sections.py
└── utils/
├── __init__.py
├── logging_tester.py
├── test_polylabels.py
├── testing_utils.py
└── video_tester.py
Showing preview only (351K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4171 symbols across 278 files)
FILE: .github/scripts/ci_build_cairo.py
function is_ci (line 35) | def is_ci():
function download_file (line 39) | def download_file(url, path):
function verify_sha256sum (line 50) | def verify_sha256sum(path, sha256sum):
function extract_tar_xz (line 57) | def extract_tar_xz(path, directory):
function run_command (line 62) | def run_command(command, cwd=None, env=None):
function gha_group (line 70) | def gha_group(title: str) -> Generator:
function set_env_var_gha (line 83) | def set_env_var_gha(name: str, value: str) -> None:
function get_ld_library_path (line 94) | def get_ld_library_path(prefix: Path) -> str:
function main (line 112) | def main():
FILE: docs/source/_static/responsiveSvg.js
function setColorScheme (line 14) | function setColorScheme(e) {
FILE: example_scenes/advanced_tex_fonts.py
function FrenchCursive (line 20) | def FrenchCursive(*tex_strings, **kwargs):
class TexFontTemplateManual (line 24) | class TexFontTemplateManual(Scene):
method construct (line 29) | def construct(self):
class TexFontTemplateLibrary (line 47) | class TexFontTemplateLibrary(Scene):
method construct (line 63) | def construct(self):
FILE: example_scenes/basic.py
class OpeningManim (line 18) | class OpeningManim(Scene):
method construct (line 19) | def construct(self):
class SquareToCircle (line 72) | class SquareToCircle(Scene):
method construct (line 73) | def construct(self):
class WarpSquare (line 85) | class WarpSquare(Scene):
method construct (line 86) | def construct(self):
class WriteStuff (line 97) | class WriteStuff(Scene):
method construct (line 98) | def construct(self):
class UpdatersExample (line 112) | class UpdatersExample(Scene):
method construct (line 113) | def construct(self):
class SpiralInExample (line 133) | class SpiralInExample(Scene):
method construct (line 134) | def construct(self):
class LineJoints (line 167) | class LineJoints(Scene):
method construct (line 168) | def construct(self):
FILE: example_scenes/customtex.py
class TexTemplateFromCLI (line 4) | class TexTemplateFromCLI(Scene):
method construct (line 13) | def construct(self):
class InCodeTexTemplate (line 19) | class InCodeTexTemplate(Scene):
method construct (line 24) | def construct(self):
FILE: example_scenes/opengl.py
function get_plane_mesh (line 11) | def get_plane_mesh(context):
class TextTest (line 73) | class TextTest(Scene):
method construct (line 74) | def construct(self):
class GuiTest (line 89) | class GuiTest(Scene):
method construct (line 90) | def construct(self):
class GuiTest2 (line 106) | class GuiTest2(Scene):
method construct (line 107) | def construct(self):
class ThreeDMobjectTest (line 133) | class ThreeDMobjectTest(Scene):
method construct (line 134) | def construct(self):
class NamedFullScreenQuad (line 157) | class NamedFullScreenQuad(Scene):
method construct (line 158) | def construct(self):
class InlineFullScreenQuad (line 180) | class InlineFullScreenQuad(Scene):
method construct (line 181) | def construct(self):
class SimpleInlineFullScreenQuad (line 240) | class SimpleInlineFullScreenQuad(Scene):
method construct (line 241) | def construct(self):
class InlineShaderExample (line 288) | class InlineShaderExample(Scene):
method construct (line 289) | def construct(self):
class NamedShaderExample (line 366) | class NamedShaderExample(Scene):
method construct (line 367) | def construct(self):
class InteractiveDevelopment (line 399) | class InteractiveDevelopment(Scene):
method construct (line 400) | def construct(self):
class SurfaceExample (line 447) | class SurfaceExample(Scene):
method construct (line 448) | def construct(self):
FILE: manim/__main__.py
function show_splash (line 17) | def show_splash(ctx: click.Context, param: click.Option, value: str | No...
function print_version_and_exit (line 34) | def print_version_and_exit(
function main (line 83) | def main(ctx: click.Context) -> None:
FILE: manim/_config/__init__.py
function tempconfig (line 46) | def tempconfig(temp: ManimConfig | dict[str, Any]) -> Generator[None, No...
FILE: manim/_config/cli_colors.py
function parse_cli_ctx (line 17) | def parse_cli_ctx(parser: configparser.SectionProxy) -> dict[str, Any]:
FILE: manim/_config/logger_utils.py
function make_logger (line 54) | def make_logger(
function parse_theme (line 111) | def parse_theme(parser: configparser.SectionProxy) -> Theme | None:
function set_file_logger (line 151) | def set_file_logger(scene_name: str, module_name: str, log_dir: Path) ->...
class JSONFormatter (line 180) | class JSONFormatter(logging.Formatter):
method format (line 187) | def format(self, record: logging.LogRecord) -> str:
FILE: manim/_config/utils.py
function config_file_paths (line 45) | def config_file_paths() -> list[Path]:
function make_config_parser (line 88) | def make_config_parser(
function _determine_quality (line 137) | def _determine_quality(qual: str | None) -> str:
class ManimConfig (line 145) | class ManimConfig(MutableMapping):
method __init__ (line 329) | def __init__(self) -> None:
method __iter__ (line 333) | def __iter__(self) -> Iterator[str]:
method __len__ (line 336) | def __len__(self) -> int:
method __contains__ (line 339) | def __contains__(self, key: object) -> bool:
method __getitem__ (line 347) | def __getitem__(self, key: str) -> Any:
method __setitem__ (line 350) | def __setitem__(self, key: str, val: Any) -> None:
method update (line 353) | def update(self, obj: ManimConfig | dict[str, Any]) -> None: # type: ...
method __delitem__ (line 396) | def __delitem__(self, key: str) -> NoReturn:
method __delattr__ (line 399) | def __delattr__(self, key: str) -> NoReturn:
method copy (line 403) | def copy(self) -> Self:
method __copy__ (line 422) | def __copy__(self) -> Self:
method __deepcopy__ (line 426) | def __deepcopy__(self, memo: dict[str, Any]) -> Self:
method _set_from_list (line 436) | def _set_from_list(self, key: str, val: Any, values: list[Any]) -> None:
method _set_from_enum (line 443) | def _set_from_enum(self, key: str, enum_value: Any, enum_class: EnumMe...
method _set_boolean (line 468) | def _set_boolean(self, key: str, val: Any) -> None:
method _set_tuple (line 475) | def _set_tuple(self, key: str, val: tuple[Any]) -> None:
method _set_str (line 481) | def _set_str(self, key: str, val: Any) -> None:
method _set_between (line 490) | def _set_between(self, key: str, val: float, lo: float, hi: float) -> ...
method _set_int_between (line 497) | def _set_int_between(self, key: str, val: int, lo: int, hi: int) -> None:
method _set_pos_number (line 506) | def _set_pos_number(self, key: str, val: int, allow_inf: bool) -> None:
method __repr__ (line 517) | def __repr__(self) -> str:
method digest_parser (line 524) | def digest_parser(self, parser: configparser.ConfigParser) -> Self:
method digest_args (line 705) | def digest_args(self, args: argparse.Namespace) -> Self:
method digest_file (line 859) | def digest_file(self, filename: StrPath) -> Self:
method preview (line 902) | def preview(self) -> bool:
method preview (line 907) | def preview(self, value: bool) -> None:
method show_in_file_browser (line 911) | def show_in_file_browser(self) -> bool:
method show_in_file_browser (line 916) | def show_in_file_browser(self, value: bool) -> None:
method progress_bar (line 920) | def progress_bar(self) -> str:
method progress_bar (line 925) | def progress_bar(self, value: str) -> None:
method log_to_file (line 929) | def log_to_file(self) -> bool:
method log_to_file (line 934) | def log_to_file(self, value: bool) -> None:
method notify_outdated_version (line 938) | def notify_outdated_version(self) -> bool:
method notify_outdated_version (line 943) | def notify_outdated_version(self, value: bool) -> None:
method write_to_movie (line 947) | def write_to_movie(self) -> bool:
method write_to_movie (line 952) | def write_to_movie(self, value: bool) -> None:
method save_last_frame (line 956) | def save_last_frame(self) -> bool:
method save_last_frame (line 961) | def save_last_frame(self, value: bool) -> None:
method write_all (line 965) | def write_all(self) -> bool:
method write_all (line 970) | def write_all(self, value: bool) -> None:
method save_pngs (line 974) | def save_pngs(self) -> bool:
method save_pngs (line 979) | def save_pngs(self, value: bool) -> None:
method save_as_gif (line 983) | def save_as_gif(self) -> bool:
method save_as_gif (line 988) | def save_as_gif(self, value: bool) -> None:
method save_sections (line 992) | def save_sections(self) -> bool:
method save_sections (line 997) | def save_sections(self, value: bool) -> None:
method enable_wireframe (line 1001) | def enable_wireframe(self) -> bool:
method enable_wireframe (line 1006) | def enable_wireframe(self, value: bool) -> None:
method force_window (line 1010) | def force_window(self) -> bool:
method force_window (line 1015) | def force_window(self, value: bool) -> None:
method no_latex_cleanup (line 1019) | def no_latex_cleanup(self) -> bool:
method no_latex_cleanup (line 1024) | def no_latex_cleanup(self, value: bool) -> None:
method preview_command (line 1028) | def preview_command(self) -> str:
method preview_command (line 1032) | def preview_command(self, value: str) -> None:
method verbosity (line 1036) | def verbosity(self) -> str:
method verbosity (line 1041) | def verbosity(self, val: str) -> None:
method format (line 1050) | def format(self) -> str | None:
method format (line 1055) | def format(self, val: str) -> None:
method ffmpeg_loglevel (line 1068) | def ffmpeg_loglevel(self) -> str:
method ffmpeg_loglevel (line 1073) | def ffmpeg_loglevel(self, val: str) -> None:
method media_embed (line 1082) | def media_embed(self) -> bool | None:
method media_embed (line 1087) | def media_embed(self, value: bool) -> None:
method media_width (line 1091) | def media_width(self) -> str:
method media_width (line 1096) | def media_width(self, value: str) -> None:
method pixel_width (line 1100) | def pixel_width(self) -> int:
method pixel_width (line 1105) | def pixel_width(self, value: int) -> None:
method pixel_height (line 1109) | def pixel_height(self) -> int:
method pixel_height (line 1114) | def pixel_height(self, value: int) -> None:
method aspect_ratio (line 1118) | def aspect_ratio(self) -> float:
method frame_height (line 1125) | def frame_height(self) -> float:
method frame_height (line 1130) | def frame_height(self, value: float) -> None:
method frame_width (line 1134) | def frame_width(self) -> float:
method frame_width (line 1139) | def frame_width(self, value: float) -> None:
method frame_y_radius (line 1143) | def frame_y_radius(self) -> float:
method frame_y_radius (line 1148) | def frame_y_radius(self, value: float) -> None:
method frame_x_radius (line 1154) | def frame_x_radius(self) -> float:
method frame_x_radius (line 1159) | def frame_x_radius(self, value: float) -> None:
method top (line 1165) | def top(self) -> Vector3D:
method bottom (line 1170) | def bottom(self) -> Vector3D:
method left_side (line 1175) | def left_side(self) -> Vector3D:
method right_side (line 1180) | def right_side(self) -> Vector3D:
method frame_rate (line 1185) | def frame_rate(self) -> float:
method frame_rate (line 1190) | def frame_rate(self, value: float) -> None:
method background_color (line 1195) | def background_color(self) -> ManimColor:
method background_color (line 1200) | def background_color(self, value: Any) -> None:
method from_animation_number (line 1204) | def from_animation_number(self) -> int:
method from_animation_number (line 1209) | def from_animation_number(self, value: int) -> None:
method upto_animation_number (line 1213) | def upto_animation_number(self) -> int:
method upto_animation_number (line 1218) | def upto_animation_number(self, value: int) -> None:
method max_files_cached (line 1222) | def max_files_cached(self) -> int:
method max_files_cached (line 1227) | def max_files_cached(self, value: int) -> None:
method window_monitor (line 1231) | def window_monitor(self) -> int:
method window_monitor (line 1236) | def window_monitor(self, value: int) -> None:
method flush_cache (line 1240) | def flush_cache(self) -> bool:
method flush_cache (line 1245) | def flush_cache(self, value: bool) -> None:
method disable_caching (line 1249) | def disable_caching(self) -> bool:
method disable_caching (line 1254) | def disable_caching(self, value: bool) -> None:
method disable_caching_warning (line 1258) | def disable_caching_warning(self) -> bool:
method disable_caching_warning (line 1263) | def disable_caching_warning(self, value: bool) -> None:
method movie_file_extension (line 1267) | def movie_file_extension(self) -> str:
method movie_file_extension (line 1272) | def movie_file_extension(self, value: str) -> None:
method background_opacity (line 1276) | def background_opacity(self) -> float:
method background_opacity (line 1281) | def background_opacity(self, value: float) -> None:
method frame_size (line 1287) | def frame_size(self) -> tuple[int, int]:
method frame_size (line 1292) | def frame_size(self, value: tuple[int, int]) -> None:
method quality (line 1298) | def quality(self) -> str | None:
method quality (line 1308) | def quality(self, value: str | None) -> None:
method transparent (line 1318) | def transparent(self) -> bool:
method transparent (line 1324) | def transparent(self, value: bool) -> None:
method dry_run (line 1329) | def dry_run(self) -> bool:
method dry_run (line 1334) | def dry_run(self, val: bool) -> None:
method renderer (line 1343) | def renderer(self) -> RendererType:
method renderer (line 1369) | def renderer(self, value: str | RendererType) -> None:
method media_dir (line 1412) | def media_dir(self) -> str:
method media_dir (line 1417) | def media_dir(self, value: str | Path) -> None:
method window_position (line 1421) | def window_position(self) -> str:
method window_position (line 1426) | def window_position(self, value: str) -> None:
method window_size (line 1430) | def window_size(self) -> str | tuple[int, ...]:
method window_size (line 1435) | def window_size(self, value: str | tuple[int, ...]) -> None:
method resolve_movie_file_extension (line 1438) | def resolve_movie_file_extension(self, is_transparent: bool) -> None:
method enable_gui (line 1455) | def enable_gui(self) -> bool:
method enable_gui (line 1460) | def enable_gui(self, value: bool) -> None:
method gui_location (line 1464) | def gui_location(self) -> tuple[int, ...]:
method gui_location (line 1469) | def gui_location(self, value: tuple[Any]) -> None:
method fullscreen (line 1473) | def fullscreen(self) -> bool:
method fullscreen (line 1478) | def fullscreen(self, value: bool) -> None:
method use_projection_fill_shaders (line 1482) | def use_projection_fill_shaders(self) -> bool:
method use_projection_fill_shaders (line 1487) | def use_projection_fill_shaders(self, value: bool) -> None:
method use_projection_stroke_shaders (line 1491) | def use_projection_stroke_shaders(self) -> bool:
method use_projection_stroke_shaders (line 1496) | def use_projection_stroke_shaders(self, value: bool) -> None:
method zero_pad (line 1500) | def zero_pad(self) -> int:
method zero_pad (line 1505) | def zero_pad(self, value: int) -> None:
method get_dir (line 1508) | def get_dir(self, key: str, **kwargs: Any) -> Path:
method _set_dir (line 1660) | def _set_dir(self, key: str, val: str | Path) -> None:
method assets_dir (line 1667) | def assets_dir(self) -> str:
method assets_dir (line 1672) | def assets_dir(self, value: str | Path) -> None:
method log_dir (line 1676) | def log_dir(self) -> str:
method log_dir (line 1681) | def log_dir(self, value: str | Path) -> None:
method video_dir (line 1685) | def video_dir(self) -> str:
method video_dir (line 1690) | def video_dir(self, value: str | Path) -> None:
method sections_dir (line 1694) | def sections_dir(self) -> str:
method sections_dir (line 1699) | def sections_dir(self, value: str | Path) -> None:
method images_dir (line 1703) | def images_dir(self) -> str:
method images_dir (line 1708) | def images_dir(self, value: str | Path) -> None:
method text_dir (line 1712) | def text_dir(self) -> str:
method text_dir (line 1717) | def text_dir(self, value: str | Path) -> None:
method tex_dir (line 1721) | def tex_dir(self) -> str:
method tex_dir (line 1726) | def tex_dir(self, value: str | Path) -> None:
method partial_movie_dir (line 1730) | def partial_movie_dir(self) -> str:
method partial_movie_dir (line 1735) | def partial_movie_dir(self, value: str | Path) -> None:
method custom_folders (line 1739) | def custom_folders(self) -> str:
method custom_folders (line 1744) | def custom_folders(self, value: str | Path) -> None:
method input_file (line 1748) | def input_file(self) -> str | Path:
method input_file (line 1753) | def input_file(self, value: str | Path) -> None:
method output_file (line 1757) | def output_file(self) -> str:
method output_file (line 1762) | def output_file(self, value: str | Path) -> None:
method scene_names (line 1766) | def scene_names(self) -> list[str]:
method scene_names (line 1771) | def scene_names(self, value: list[str]) -> None:
method tex_template (line 1775) | def tex_template(self) -> TexTemplate:
method tex_template (line 1786) | def tex_template(self, val: TexTemplate) -> None:
method tex_template_file (line 1791) | def tex_template_file(self) -> Path:
method tex_template_file (line 1796) | def tex_template_file(self, val: str) -> None:
method plugins (line 1808) | def plugins(self) -> list[str]:
method plugins (line 1813) | def plugins(self, value: list[str]) -> None:
method seed (line 1817) | def seed(self) -> int | None:
method seed (line 1822) | def seed(self, value: int | None) -> None:
class ManimFrame (line 1830) | class ManimFrame(Mapping):
method __init__ (line 1863) | def __init__(self, c: ManimConfig) -> None:
method __getitem__ (line 1871) | def __getitem__(self, key: str) -> Any:
method __iter__ (line 1879) | def __iter__(self) -> Iterator[Any]:
method __len__ (line 1882) | def __len__(self) -> int:
method __setattr__ (line 1886) | def __setattr__(self, attr: Any, val: Any) -> NoReturn:
method __setitem__ (line 1889) | def __setitem__(self, key: Any, val: Any) -> NoReturn:
method __delitem__ (line 1892) | def __delitem__(self, key: Any) -> NoReturn:
FILE: manim/animation/animation.py
class Animation (line 30) | class Animation:
method __new__ (line 109) | def __new__(
method __init__ (line 128) | def __init__(
method run_time (line 171) | def run_time(self) -> float:
method run_time (line 175) | def run_time(self, value: float) -> None:
method _typecheck_input (line 183) | def _typecheck_input(self, mobject: Mobject | None) -> None:
method __str__ (line 189) | def __str__(self) -> str:
method __repr__ (line 194) | def __repr__(self) -> str:
method begin (line 197) | def begin(self) -> None:
method finish (line 216) | def finish(self) -> None:
method clean_up_from_scene (line 229) | def clean_up_from_scene(self, scene: Scene) -> None:
method _setup_scene (line 244) | def _setup_scene(self, scene: Scene) -> None:
method create_starting_mobject (line 263) | def create_starting_mobject(self) -> Mobject | OpenGLMobject:
method get_all_mobjects (line 267) | def get_all_mobjects(self) -> Sequence[Mobject | OpenGLMobject]:
method get_all_families_zipped (line 279) | def get_all_families_zipped(self) -> Iterable[tuple]:
method update_mobjects (line 289) | def update_mobjects(self, dt: float) -> None:
method get_all_mobjects_to_update (line 300) | def get_all_mobjects_to_update(self) -> list[Mobject]:
method copy (line 313) | def copy(self) -> Animation:
method interpolate (line 326) | def interpolate(self, alpha: float) -> None:
method interpolate_mobject (line 339) | def interpolate_mobject(self, alpha: float) -> None:
method interpolate_submobject (line 354) | def interpolate_submobject(
method get_sub_alpha (line 364) | def get_sub_alpha(self, alpha: float, index: int, num_submobjects: int...
method set_run_time (line 394) | def set_run_time(self, run_time: float) -> Animation:
method get_run_time (line 416) | def get_run_time(self) -> float:
method set_rate_func (line 426) | def set_rate_func(
method get_rate_func (line 446) | def get_rate_func(
method set_name (line 458) | def set_name(self, name: str) -> Animation:
method is_remover (line 474) | def is_remover(self) -> bool:
method is_introducer (line 484) | def is_introducer(self) -> bool:
method __init_subclass__ (line 495) | def __init_subclass__(cls, **kwargs) -> None:
method set_default (line 503) | def set_default(cls, **kwargs) -> None:
function prepare_animation (line 543) | def prepare_animation(
class Wait (line 584) | class Wait(Animation):
method __init__ (line 607) | def __init__(
method begin (line 625) | def begin(self) -> None:
method finish (line 628) | def finish(self) -> None:
method clean_up_from_scene (line 631) | def clean_up_from_scene(self, scene: Scene) -> None:
method update_mobjects (line 634) | def update_mobjects(self, dt: float) -> None:
method interpolate (line 637) | def interpolate(self, alpha: float) -> None:
class Add (line 641) | class Add(Animation):
method __init__ (line 703) | def __init__(
method begin (line 709) | def begin(self) -> None:
method finish (line 712) | def finish(self) -> None:
method clean_up_from_scene (line 715) | def clean_up_from_scene(self, scene: Scene) -> None:
method update_mobjects (line 718) | def update_mobjects(self, dt: float) -> None:
method interpolate (line 721) | def interpolate(self, alpha: float) -> None:
function override_animation (line 725) | def override_animation(
FILE: manim/animation/changing.py
class AnimatedBoundary (line 24) | class AnimatedBoundary(VGroup):
method __init__ (line 41) | def __init__(
method update_boundary_copies (line 67) | def update_boundary_copies(self, dt: float) -> None:
method full_family_become_partial (line 95) | def full_family_become_partial(
class TracedPath (line 105) | class TracedPath(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 147) | def __init__(
method update_path (line 161) | def update_path(self, mob: Mobject, dt: float) -> None:
FILE: manim/animation/composition.py
class AnimationGroup (line 30) | class AnimationGroup(Animation):
method __init__ (line 54) | def __init__(
method get_all_mobjects (line 83) | def get_all_mobjects(self) -> Sequence[Mobject | OpenGLMobject]:
method begin (line 86) | def begin(self) -> None:
method _setup_scene (line 98) | def _setup_scene(self, scene: Scene) -> None:
method finish (line 102) | def finish(self) -> None:
method clean_up_from_scene (line 110) | def clean_up_from_scene(self, scene: Scene) -> None:
method update_mobjects (line 117) | def update_mobjects(self, dt: float) -> None:
method init_run_time (line 123) | def init_run_time(self, run_time: float | None) -> float:
method build_animations_with_timings (line 146) | def build_animations_with_timings(self) -> None:
method interpolate (line 162) | def interpolate(self, alpha: float) -> None:
class Succession (line 198) | class Succession(AnimationGroup):
method __init__ (line 235) | def __init__(self, *animations: Animation, lag_ratio: float = 1, **kwa...
method begin (line 238) | def begin(self) -> None:
method finish (line 246) | def finish(self) -> None:
method update_mobjects (line 250) | def update_mobjects(self, dt: float) -> None:
method _setup_scene (line 254) | def _setup_scene(self, scene: Scene | None) -> None:
method update_active_animation (line 264) | def update_active_animation(self, index: int) -> None:
method next_animation (line 277) | def next_animation(self) -> None:
method interpolate (line 286) | def interpolate(self, alpha: float) -> None:
class LaggedStart (line 297) | class LaggedStart(AnimationGroup):
method __init__ (line 342) | def __init__(
class LaggedStartMap (line 351) | class LaggedStartMap(LaggedStart):
method __init__ (line 400) | def __init__(
FILE: manim/animation/creation.py
class ShowPartial (line 102) | class ShowPartial(Animation):
method __init__ (line 116) | def __init__(
method interpolate_submobject (line 126) | def interpolate_submobject(
method _get_bounds (line 136) | def _get_bounds(self, alpha: float) -> tuple[float, float]:
class Create (line 140) | class Create(ShowPartial):
method __init__ (line 167) | def __init__(
method _get_bounds (line 176) | def _get_bounds(self, alpha: float) -> tuple[float, float]:
class Uncreate (line 180) | class Uncreate(Create):
method __init__ (line 197) | def __init__(
class DrawBorderThenFill (line 213) | class DrawBorderThenFill(Animation):
method __init__ (line 225) | def __init__(
method _typecheck_input (line 247) | def _typecheck_input(self, vmobject: VMobject | OpenGLVMobject) -> None:
method begin (line 253) | def begin(self) -> None:
method get_outline (line 257) | def get_outline(self) -> Mobject:
method get_stroke_color (line 264) | def get_stroke_color(self, vmobject: VMobject | OpenGLVMobject) -> Man...
method get_all_mobjects (line 271) | def get_all_mobjects(self) -> Sequence[Mobject]:
method interpolate_submobject (line 274) | def interpolate_submobject(
class Write (line 291) | class Write(DrawBorderThenFill):
method __init__ (line 318) | def __init__(
method _set_default_config_from_length (line 344) | def _set_default_config_from_length(
method reverse_submobjects (line 357) | def reverse_submobjects(self) -> None:
method begin (line 360) | def begin(self) -> None:
method finish (line 365) | def finish(self) -> None:
class Unwrite (line 371) | class Unwrite(Write):
method __init__ (line 399) | def __init__(
class SpiralIn (line 423) | class SpiralIn(Animation):
method __init__ (line 451) | def __init__(
method interpolate_mobject (line 473) | def interpolate_mobject(self, alpha: float) -> None:
class ShowIncreasingSubsets (line 492) | class ShowIncreasingSubsets(Animation):
method __init__ (line 508) | def __init__(
method interpolate_mobject (line 527) | def interpolate_mobject(self, alpha: float) -> None:
method update_submobject_list (line 537) | def update_submobject_list(self, index: int) -> None:
class AddTextLetterByLetter (line 544) | class AddTextLetterByLetter(ShowIncreasingSubsets):
method __init__ (line 558) | def __init__(
class RemoveTextLetterByLetter (line 592) | class RemoveTextLetterByLetter(AddTextLetterByLetter):
method __init__ (line 606) | def __init__(
class ShowSubmobjectsOneByOne (line 633) | class ShowSubmobjectsOneByOne(ShowIncreasingSubsets):
method __init__ (line 636) | def __init__(
method update_submobject_list (line 645) | def update_submobject_list(self, index: int) -> None:
class AddTextWordByWord (line 654) | class AddTextWordByWord(Succession):
method __init__ (line 657) | def __init__(
class TypeWithCursor (line 678) | class TypeWithCursor(AddTextLetterByLetter):
method __init__ (line 720) | def __init__(
method begin (line 744) | def begin(self) -> None:
method finish (line 754) | def finish(self) -> None:
method clean_up_from_scene (line 762) | def clean_up_from_scene(self, scene: Scene) -> None:
method update_submobject_list (line 767) | def update_submobject_list(self, index: int) -> None:
class UntypeWithCursor (line 788) | class UntypeWithCursor(TypeWithCursor):
method __init__ (line 830) | def __init__(
FILE: manim/animation/fading.py
class _Fade (line 34) | class _Fade(Transform):
method __init__ (line 52) | def __init__(
method _create_faded_mobject (line 77) | def _create_faded_mobject(self, fadeIn: bool) -> Mobject:
class FadeIn (line 98) | class FadeIn(_Fade):
method __init__ (line 136) | def __init__(self, *mobjects: Mobject, **kwargs: Any) -> None:
method create_target (line 139) | def create_target(self) -> Mobject:
method create_starting_mobject (line 142) | def create_starting_mobject(self) -> Mobject:
class FadeOut (line 146) | class FadeOut(_Fade):
method __init__ (line 184) | def __init__(self, *mobjects: Mobject, **kwargs: Any) -> None:
method create_target (line 187) | def create_target(self) -> Mobject:
method clean_up_from_scene (line 190) | def clean_up_from_scene(self, scene: Scene) -> None:
FILE: manim/animation/growing.py
class GrowFromPoint (line 49) | class GrowFromPoint(Transform):
method __init__ (line 79) | def __init__(
method create_target (line 90) | def create_target(self) -> Mobject | OpenGLMobject:
method create_starting_mobject (line 93) | def create_starting_mobject(self) -> Mobject | OpenGLMobject:
class GrowFromCenter (line 102) | class GrowFromCenter(GrowFromPoint):
method __init__ (line 126) | def __init__(
class GrowFromEdge (line 136) | class GrowFromEdge(GrowFromPoint):
method __init__ (line 165) | def __init__(
class GrowArrow (line 176) | class GrowArrow(GrowFromPoint):
method __init__ (line 200) | def __init__(
method create_starting_mobject (line 206) | def create_starting_mobject(self) -> Mobject | OpenGLMobject:
class SpinInFromNothing (line 214) | class SpinInFromNothing(GrowFromCenter):
method __init__ (line 242) | def __init__(
FILE: manim/animation/indication.py
class FocusOn (line 72) | class FocusOn(Transform):
method __init__ (line 98) | def __init__(
method create_target (line 118) | def create_target(self) -> Dot:
class Indicate (line 125) | class Indicate(Transform):
method __init__ (line 152) | def __init__(
method create_target (line 164) | def create_target(self) -> Mobject | OpenGLMobject:
class Flash (line 171) | class Flash(AnimationGroup):
method __init__ (line 222) | def __init__(
method create_lines (line 251) | def create_lines(self) -> VGroup:
method create_line_anims (line 262) | def create_line_anims(self) -> Iterable[ShowPassingFlash]:
class ShowPassingFlash (line 274) | class ShowPassingFlash(ShowPartial):
method __init__ (line 308) | def __init__(
method _get_bounds (line 314) | def _get_bounds(self, alpha: float) -> tuple[float, float]:
method clean_up_from_scene (line 322) | def clean_up_from_scene(self, scene: Scene) -> None:
class ShowPassingFlashWithThinningStrokeWidth (line 328) | class ShowPassingFlashWithThinningStrokeWidth(AnimationGroup):
method __init__ (line 329) | def __init__(
class ApplyWave (line 358) | class ApplyWave(Homotopy):
method __init__ (line 401) | def __init__(
class Wiggle (line 488) | class Wiggle(Animation):
method __init__ (line 521) | def __init__(
method get_scale_about_point (line 543) | def get_scale_about_point(self) -> Point3D:
method get_rotate_about_point (line 548) | def get_rotate_about_point(self) -> Point3D:
method interpolate_submobject (line 553) | def interpolate_submobject(
class Circumscribe (line 571) | class Circumscribe(Succession):
method __init__ (line 613) | def __init__(
class Blink (line 668) | class Blink(Succession):
method __init__ (line 699) | def __init__(
FILE: manim/animation/movement.py
class Homotopy (line 31) | class Homotopy(Animation):
method __init__ (line 76) | def __init__(
method function_at_time_t (line 90) | def function_at_time_t(self, t: float) -> MappingFunction:
method interpolate_submobject (line 97) | def interpolate_submobject(
class SmoothedVectorizedHomotopy (line 111) | class SmoothedVectorizedHomotopy(Homotopy):
method interpolate_submobject (line 112) | def interpolate_submobject(
class ComplexHomotopy (line 124) | class ComplexHomotopy(Homotopy):
method __init__ (line 125) | def __init__(
class PhaseFlow (line 145) | class PhaseFlow(Animation):
method __init__ (line 146) | def __init__(
method interpolate_mobject (line 164) | def interpolate_mobject(self, alpha: float) -> None:
class MoveAlongPath (line 173) | class MoveAlongPath(Animation):
method __init__ (line 188) | def __init__(
method interpolate_mobject (line 200) | def interpolate_mobject(self, alpha: float) -> None:
FILE: manim/animation/numbers.py
class ChangingDecimal (line 17) | class ChangingDecimal(Animation):
method __init__ (line 53) | def __init__(
method check_validity_of_input (line 66) | def check_validity_of_input(self, decimal_mob: DecimalNumber) -> None:
method interpolate_mobject (line 70) | def interpolate_mobject(self, alpha: float) -> None:
class ChangeDecimalToValue (line 74) | class ChangeDecimalToValue(ChangingDecimal):
method __init__ (line 97) | def __init__(
FILE: manim/animation/rotation.py
class Rotating (line 21) | class Rotating(Animation):
method __init__ (line 88) | def __init__(
method interpolate_mobject (line 105) | def interpolate_mobject(self, alpha: float) -> None:
class Rotate (line 115) | class Rotate(Transform):
method __init__ (line 155) | def __init__(
method create_target (line 176) | def create_target(self) -> Mobject | OpenGLMobject:
FILE: manim/animation/specialized.py
class Broadcast (line 15) | class Broadcast(LaggedStart):
method __init__ (line 52) | def __init__(
FILE: manim/animation/speedmodifier.py
class ChangeSpeed (line 23) | class ChangeSpeed(Animation):
method __init__ (line 97) | def __init__(
method setup (line 216) | def setup(self, anim):
method get_scaled_total_time (line 223) | def get_scaled_total_time(self) -> float:
method add_updater (line 236) | def add_updater(
method interpolate (line 279) | def interpolate(self, alpha: float) -> None:
method update_mobjects (line 282) | def update_mobjects(self, dt: float) -> None:
method finish (line 285) | def finish(self) -> None:
method begin (line 289) | def begin(self) -> None:
method clean_up_from_scene (line 292) | def clean_up_from_scene(self, scene: Scene) -> None:
method _setup_scene (line 295) | def _setup_scene(self, scene) -> None:
FILE: manim/animation/transform.py
class Transform (line 57) | class Transform(Animation):
method __init__ (line 134) | def __init__(
method path_arc (line 168) | def path_arc(self) -> float:
method path_arc (line 172) | def path_arc(self, path_arc: float) -> None:
method path_func (line 180) | def path_func(
method path_func (line 189) | def path_func(
method begin (line 199) | def begin(self) -> None:
method create_target (line 213) | def create_target(self) -> Mobject | OpenGLMobject:
method clean_up_from_scene (line 218) | def clean_up_from_scene(self, scene: Scene) -> None:
method get_all_mobjects (line 223) | def get_all_mobjects(self) -> Sequence[Mobject]:
method get_all_families_zipped (line 231) | def get_all_families_zipped(self) -> Iterable[tuple]: # more precise ...
method interpolate_submobject (line 241) | def interpolate_submobject(
class ReplacementTransform (line 252) | class ReplacementTransform(Transform):
method __init__ (line 300) | def __init__(self, mobject: Mobject, target_mobject: Mobject, **kwargs...
class TransformFromCopy (line 306) | class TransformFromCopy(Transform):
method __init__ (line 309) | def __init__(self, mobject: Mobject, target_mobject: Mobject, **kwargs...
method interpolate (line 312) | def interpolate(self, alpha: float) -> None:
class ClockwiseTransform (line 316) | class ClockwiseTransform(Transform):
method __init__ (line 346) | def __init__(
class CounterclockwiseTransform (line 356) | class CounterclockwiseTransform(Transform):
method __init__ (line 395) | def __init__(
class MoveToTarget (line 405) | class MoveToTarget(Transform):
method __init__ (line 431) | def __init__(self, mobject: Mobject, **kwargs) -> None:
method check_validity_of_input (line 435) | def check_validity_of_input(self, mobject: Mobject) -> None:
class _MethodAnimation (line 442) | class _MethodAnimation(MoveToTarget):
method __init__ (line 443) | def __init__(self, mobject: Mobject, methods: list[MethodWithArgs]) ->...
method finish (line 447) | def finish(self) -> None:
class ApplyMethod (line 453) | class ApplyMethod(Transform):
method __init__ (line 472) | def __init__(
method check_validity_of_input (line 480) | def check_validity_of_input(self, method: Callable) -> None:
method create_target (line 488) | def create_target(self) -> Mobject:
class ApplyPointwiseFunction (line 502) | class ApplyPointwiseFunction(ApplyMethod):
method __init__ (line 523) | def __init__(
class ApplyPointwiseFunctionToCenter (line 533) | class ApplyPointwiseFunctionToCenter(ApplyPointwiseFunction):
method __init__ (line 534) | def __init__(self, function: types.MethodType, mobject: Mobject, **kwa...
method begin (line 538) | def begin(self) -> None:
class FadeToColor (line 543) | class FadeToColor(ApplyMethod):
method __init__ (line 557) | def __init__(self, mobject: Mobject, color: str, **kwargs) -> None:
class ScaleInPlace (line 561) | class ScaleInPlace(ApplyMethod):
method __init__ (line 575) | def __init__(self, mobject: Mobject, scale_factor: float, **kwargs) ->...
class ShrinkToCenter (line 579) | class ShrinkToCenter(ScaleInPlace):
method __init__ (line 593) | def __init__(self, mobject: Mobject, **kwargs) -> None:
class Restore (line 597) | class Restore(ApplyMethod):
method __init__ (line 619) | def __init__(self, mobject: Mobject, **kwargs) -> None:
class ApplyFunction (line 623) | class ApplyFunction(Transform):
method __init__ (line 624) | def __init__(self, function: types.MethodType, mobject: Mobject, **kwa...
method create_target (line 628) | def create_target(self) -> Any:
class ApplyMatrix (line 637) | class ApplyMatrix(ApplyPointwiseFunction):
method __init__ (line 663) | def __init__(
method initialize_matrix (line 677) | def initialize_matrix(self, matrix: np.ndarray) -> np.ndarray:
class ApplyComplexFunction (line 688) | class ApplyComplexFunction(ApplyMethod):
method __init__ (line 689) | def __init__(self, function: types.MethodType, mobject: Mobject, **kwa...
method _init_path_func (line 694) | def _init_path_func(self) -> None:
class CyclicReplace (line 703) | class CyclicReplace(Transform):
method __init__ (line 735) | def __init__(
method create_target (line 741) | def create_target(self) -> Group:
class Swap (line 749) | class Swap(CyclicReplace):
class TransformAnimations (line 754) | class TransformAnimations(Transform):
method __init__ (line 755) | def __init__(
method interpolate (line 788) | def interpolate(self, alpha: float) -> None:
class FadeTransform (line 794) | class FadeTransform(Transform):
method __init__ (line 838) | def __init__(self, mobject, target_mobject, stretch=True, dim_to_match...
method begin (line 849) | def begin(self):
method ghost_to (line 866) | def ghost_to(self, source, target):
method get_all_mobjects (line 877) | def get_all_mobjects(self) -> Sequence[Mobject]:
method get_all_families_zipped (line 884) | def get_all_families_zipped(self):
method clean_up_from_scene (line 887) | def clean_up_from_scene(self, scene):
class FadeTransformPieces (line 894) | class FadeTransformPieces(FadeTransform):
method begin (line 924) | def begin(self):
method ghost_to (line 928) | def ghost_to(self, source, target):
FILE: manim/animation/transform_matching_parts.py
class TransformMatchingAbstractBase (line 26) | class TransformMatchingAbstractBase(AnimationGroup):
method __init__ (line 70) | def __init__(
method get_shape_map (line 143) | def get_shape_map(self, mobject: Mobject) -> dict:
method clean_up_from_scene (line 155) | def clean_up_from_scene(self, scene: Scene) -> None:
method get_mobject_parts (line 164) | def get_mobject_parts(mobject: Mobject):
method get_mobject_key (line 168) | def get_mobject_key(mobject: Mobject):
class TransformMatchingShapes (line 172) | class TransformMatchingShapes(TransformMatchingAbstractBase):
method __init__ (line 201) | def __init__(
method get_mobject_parts (line 220) | def get_mobject_parts(mobject: Mobject) -> list[Mobject]:
method get_mobject_key (line 224) | def get_mobject_key(mobject: Mobject) -> int:
class TransformMatchingTex (line 234) | class TransformMatchingTex(TransformMatchingAbstractBase):
method __init__ (line 265) | def __init__(
method get_mobject_parts (line 284) | def get_mobject_parts(mobject: Mobject) -> list[Mobject]:
method get_mobject_key (line 296) | def get_mobject_key(mobject: Mobject) -> str:
FILE: manim/animation/updaters/mobject_update_utils.py
function assert_is_mobject_method (line 32) | def assert_is_mobject_method(method: Callable) -> None:
function always (line 38) | def always(method: Callable, *args, **kwargs) -> Mobject:
function f_always (line 46) | def f_always(method: Callable[[Mobject], None], *arg_generators, **kwarg...
function always_redraw (line 64) | def always_redraw(func: Callable[[], Mobject]) -> Mobject:
function always_shift (line 109) | def always_shift(
function always_rotate (line 148) | def always_rotate(mobject: Mobject, rate: float = 20 * DEGREES, **kwargs...
function turn_animation_into_updater (line 181) | def turn_animation_into_updater(
function cycle_animation (line 244) | def cycle_animation(animation: Animation, **kwargs) -> Mobject:
FILE: manim/animation/updaters/update.py
class UpdateFromFunc (line 18) | class UpdateFromFunc(Animation):
method __init__ (line 25) | def __init__(
method interpolate_mobject (line 37) | def interpolate_mobject(self, alpha: float) -> None:
class UpdateFromAlphaFunc (line 41) | class UpdateFromAlphaFunc(UpdateFromFunc):
method interpolate_mobject (line 42) | def interpolate_mobject(self, alpha: float) -> None:
class MaintainPositionRelativeTo (line 46) | class MaintainPositionRelativeTo(Animation):
method __init__ (line 47) | def __init__(
method interpolate_mobject (line 57) | def interpolate_mobject(self, alpha: float) -> None:
FILE: manim/camera/camera.py
class Camera (line 61) | class Camera:
method __init__ (line 83) | def __init__(
method __deepcopy__ (line 161) | def __deepcopy__(self, memo: Any) -> Camera:
method background_color (line 169) | def background_color(self) -> ManimColor:
method background_color (line 173) | def background_color(self, color: ManimColor) -> None:
method background_opacity (line 178) | def background_opacity(self) -> float:
method background_opacity (line 182) | def background_opacity(self, alpha: float) -> None:
method type_or_raise (line 186) | def type_or_raise(
method reset_pixel_shape (line 233) | def reset_pixel_shape(self, new_height: float, new_width: float) -> None:
method resize_frame_shape (line 250) | def resize_frame_shape(self, fixed_dimension: int = 0) -> None:
method init_background (line 275) | def init_background(self) -> None:
method get_image (line 301) | def get_image(
method convert_pixel_array (line 322) | def convert_pixel_array(
method set_pixel_array (line 349) | def set_pixel_array(
method set_background (line 373) | def set_background(
method make_background_from_func (line 389) | def make_background_from_func(
method set_background_from_func (line 415) | def set_background_from_func(
method reset (line 431) | def reset(self) -> Self:
method set_frame_to_background (line 443) | def set_frame_to_background(self, background: PixelArray) -> None:
method get_mobjects_to_display (line 448) | def get_mobjects_to_display(
method is_in_frame (line 485) | def is_in_frame(self, mobject: Mobject) -> bool:
method capture_mobject (line 512) | def capture_mobject(self, mobject: Mobject, **kwargs: Any) -> None:
method capture_mobjects (line 528) | def capture_mobjects(self, mobjects: Iterable[Mobject], **kwargs: Any)...
method get_cached_cairo_context (line 563) | def get_cached_cairo_context(self, pixel_array: PixelArray) -> cairo.C...
method cache_cairo_context (line 579) | def cache_cairo_context(self, pixel_array: PixelArray, ctx: cairo.Cont...
method get_cairo_context (line 591) | def get_cairo_context(self, pixel_array: PixelArray) -> cairo.Context:
method display_multiple_vectorized_mobjects (line 636) | def display_multiple_vectorized_mobjects(
method display_multiple_non_background_colored_vmobjects (line 660) | def display_multiple_non_background_colored_vmobjects(
method display_vectorized (line 677) | def display_vectorized(self, vmobject: VMobject, ctx: cairo.Context) -...
method set_cairo_context_path (line 698) | def set_cairo_context_path(self, ctx: cairo.Context, vmobject: VMobjec...
method set_cairo_context_color (line 732) | def set_cairo_context_color(
method apply_fill (line 765) | def apply_fill(self, ctx: cairo.Context, vmobject: VMobject) -> Self:
method apply_stroke (line 784) | def apply_stroke(
method get_stroke_rgbas (line 825) | def get_stroke_rgbas(
method get_fill_rgbas (line 846) | def get_fill_rgbas(self, vmobject: VMobject) -> FloatRGBA_Array:
method get_background_colored_vmobject_displayer (line 861) | def get_background_colored_vmobject_displayer(
method display_multiple_background_colored_vmobjects (line 879) | def display_multiple_background_colored_vmobjects(
method display_multiple_point_cloud_mobjects (line 906) | def display_multiple_point_cloud_mobjects(
method display_point_cloud (line 927) | def display_point_cloud(
method display_multiple_image_mobjects (line 980) | def display_multiple_image_mobjects(
method display_image_mobject (line 997) | def display_image_mobject(
method overlay_rgba_array (line 1109) | def overlay_rgba_array(
method overlay_PIL_image (line 1123) | def overlay_PIL_image(self, pixel_array: np.ndarray, image: Image) -> ...
method adjust_out_of_range_points (line 1138) | def adjust_out_of_range_points(self, points: np.ndarray) -> np.ndarray:
method transform_points_pre_display (line 1167) | def transform_points_pre_display(
method points_to_subpixel_coords (line 1182) | def points_to_subpixel_coords(
method points_to_pixel_coords (line 1208) | def points_to_pixel_coords(
method on_screen_pixels (line 1215) | def on_screen_pixels(self, pixel_coords: np.ndarray) -> PixelArray:
method adjusted_thickness (line 1239) | def adjusted_thickness(self, thickness: float) -> float:
method get_thickening_nudges (line 1259) | def get_thickening_nudges(self, thickness: float) -> PixelArray:
method thickened_coordinates (line 1276) | def thickened_coordinates(
method get_coords_of_all_pixels (line 1300) | def get_coords_of_all_pixels(self) -> PixelArray:
class BackgroundColoredVMobjectDisplayer (line 1336) | class BackgroundColoredVMobjectDisplayer:
method __init__ (line 1346) | def __init__(self, camera: Camera):
method reset_pixel_array (line 1352) | def reset_pixel_array(self) -> None:
method resize_background_array (line 1355) | def resize_background_array(
method resize_background_array_to_match (line 1385) | def resize_background_array_to_match(
method get_background_array (line 1406) | def get_background_array(
method display (line 1437) | def display(self, *cvmobjects: VMobject) -> PixelArray | None:
FILE: manim/camera/mapping_camera.py
class MappingCamera (line 19) | class MappingCamera(Camera):
method __init__ (line 32) | def __init__(
method points_to_pixel_coords (line 44) | def points_to_pixel_coords(self, mobject, points):
method capture_mobjects (line 51) | def capture_mobjects(self, mobjects, **kwargs):
class OldMultiCamera (line 83) | class OldMultiCamera(Camera):
method __init__ (line 91) | def __init__(self, *cameras_with_start_positions, **kwargs):
method capture_mobjects (line 108) | def capture_mobjects(self, mobjects, **kwargs):
method set_background (line 117) | def set_background(self, pixel_array, **kwargs):
method set_pixel_array (line 127) | def set_pixel_array(self, pixel_array, **kwargs):
method init_background (line 138) | def init_background(self):
class SplitScreenCamera (line 148) | class SplitScreenCamera(OldMultiCamera):
method __init__ (line 158) | def __init__(self, left_camera, right_camera, **kwargs):
FILE: manim/camera/moving_camera.py
class MovingCamera (line 27) | class MovingCamera(Camera):
method __init__ (line 37) | def __init__(
method frame_height (line 62) | def frame_height(self) -> float:
method frame_height (line 73) | def frame_height(self, frame_height: float) -> None:
method frame_width (line 84) | def frame_width(self) -> float:
method frame_width (line 95) | def frame_width(self, frame_width: float) -> None:
method frame_center (line 106) | def frame_center(self) -> Point3D:
method frame_center (line 117) | def frame_center(self, frame_center: Point3DLike | Mobject) -> None:
method capture_mobjects (line 129) | def capture_mobjects(self, mobjects: Iterable[Mobject], **kwargs: Any)...
method get_cached_cairo_context (line 134) | def get_cached_cairo_context(self, pixel_array: PixelArray) -> None:
method cache_cairo_context (line 141) | def cache_cairo_context(self, pixel_array: PixelArray, ctx: Context) -...
method get_mobjects_indicating_movement (line 159) | def get_mobjects_indicating_movement(self) -> list[Mobject]:
method auto_zoom (line 170) | def auto_zoom(
method auto_zoom (line 179) | def auto_zoom(
method auto_zoom (line 187) | def auto_zoom(
method _get_bounding_box (line 245) | def _get_bounding_box(
FILE: manim/camera/multi_camera.py
class MultiCamera (line 18) | class MultiCamera(MovingCamera):
method __init__ (line 21) | def __init__(
method add_image_mobject_from_camera (line 45) | def add_image_mobject_from_camera(
method update_sub_cameras (line 62) | def update_sub_cameras(self) -> None:
method reset (line 75) | def reset(self) -> Self:
method capture_mobjects (line 88) | def capture_mobjects(self, mobjects: Iterable[Mobject], **kwargs: Any)...
method get_mobjects_indicating_movement (line 97) | def get_mobjects_indicating_movement(self) -> list[Mobject]:
FILE: manim/camera/three_d_camera.py
class ThreeDCamera (line 39) | class ThreeDCamera(Camera):
method __init__ (line 40) | def __init__(
method frame_center (line 85) | def frame_center(self) -> Point3D:
method frame_center (line 89) | def frame_center(self, point: Point3DLike) -> None:
method capture_mobjects (line 92) | def capture_mobjects(self, mobjects: Iterable[Mobject], **kwargs: Any)...
method get_value_trackers (line 96) | def get_value_trackers(self) -> list[ValueTracker]:
method modified_rgbas (line 113) | def modified_rgbas(
method get_stroke_rgbas (line 139) | def get_stroke_rgbas(
method get_fill_rgbas (line 146) | def get_fill_rgbas(
method get_mobjects_to_display (line 151) | def get_mobjects_to_display(
method get_phi (line 167) | def get_phi(self) -> float:
method get_theta (line 177) | def get_theta(self) -> float:
method get_focal_distance (line 187) | def get_focal_distance(self) -> float:
method get_gamma (line 197) | def get_gamma(self) -> float:
method get_zoom (line 208) | def get_zoom(self) -> float:
method set_phi (line 218) | def set_phi(self, value: float) -> None:
method set_theta (line 228) | def set_theta(self, value: float) -> None:
method set_focal_distance (line 238) | def set_focal_distance(self, value: float) -> None:
method set_gamma (line 248) | def set_gamma(self, value: float) -> None:
method set_zoom (line 258) | def set_zoom(self, value: float) -> None:
method reset_rotation_matrix (line 268) | def reset_rotation_matrix(self) -> None:
method get_rotation_matrix (line 274) | def get_rotation_matrix(self) -> MatrixMN:
method generate_rotation_matrix (line 284) | def generate_rotation_matrix(self) -> MatrixMN:
method project_points (line 305) | def project_points(self, points: Point3D_Array) -> Point3D_Array:
method project_point (line 342) | def project_point(self, point: Point3D) -> Point3D:
method transform_points_pre_display (line 358) | def transform_points_pre_display(
method add_fixed_orientation_mobjects (line 377) | def add_fixed_orientation_mobjects(
method add_fixed_in_frame_mobjects (line 417) | def add_fixed_in_frame_mobjects(self, *mobjects: Mobject) -> None:
method remove_fixed_orientation_mobjects (line 433) | def remove_fixed_orientation_mobjects(self, *mobjects: Mobject) -> None:
method remove_fixed_in_frame_mobjects (line 447) | def remove_fixed_in_frame_mobjects(self, *mobjects: Mobject) -> None:
FILE: manim/cli/cfg/group.py
function value_from_string (line 44) | def value_from_string(value: str) -> str | int | bool:
function _is_expected_datatype (line 62) | def _is_expected_datatype(
function is_valid_style (line 96) | def is_valid_style(style: str) -> bool:
function replace_keys (line 116) | def replace_keys(default: dict[str, Any]) -> dict[str, Any]:
function cfg (line 153) | def cfg(ctx: cloup.Context) -> None:
function write (line 167) | def write(level: str | None = None, openfile: bool = False) -> None:
function show (line 269) | def show() -> None:
function export (line 295) | def export(ctx: cloup.Context, directory: str) -> None:
FILE: manim/cli/checkhealth/checks.py
class HealthCheckFunction (line 15) | class HealthCheckFunction(Protocol):
method __call__ (line 22) | def __call__(self) -> bool: ...
function healthcheck (line 28) | def healthcheck(
function is_manim_on_path (line 95) | def is_manim_on_path() -> bool:
function is_manim_executable_associated_to_this_library (line 118) | def is_manim_executable_associated_to_this_library() -> bool:
function is_latex_available (line 161) | def is_latex_available() -> bool:
function is_dvisvgm_available (line 183) | def is_dvisvgm_available() -> bool:
FILE: manim/cli/checkhealth/commands.py
function checkhealth (line 22) | def checkhealth() -> None:
FILE: manim/cli/default_group.py
class DefaultGroup (line 29) | class DefaultGroup(cloup.Group):
method __init__ (line 52) | def __init__(self, *args: Any, **kwargs: Any):
method set_default_command (line 61) | def set_default_command(self, command: Command) -> None:
method parse_args (line 73) | def parse_args(self, ctx: Context, args: list[str]) -> list[str]:
method get_command (line 98) | def get_command(self, ctx: Context, cmd_name: str) -> Command | None:
method resolve_command (line 122) | def resolve_command(
method command (line 160) | def command(
FILE: manim/cli/init/commands.py
function select_resolution (line 38) | def select_resolution() -> tuple[int, int]:
function update_cfg (line 61) | def update_cfg(cfg_dict: dict[str, Any], project_cfg_path: Path) -> None:
function project (line 100) | def project(default_settings: bool, **kwargs: Any) -> None:
function scene (line 152) | def scene(**kwargs: Any) -> None:
function init (line 197) | def init(ctx: cloup.Context) -> None:
FILE: manim/cli/plugins/commands.py
function plugins (line 32) | def plugins(list_available: bool) -> None:
FILE: manim/cli/render/commands.py
class ClickArgs (line 40) | class ClickArgs(Namespace):
method __init__ (line 41) | def __init__(self, args: dict[str, Any]) -> None:
method _get_kwargs (line 45) | def _get_kwargs(self) -> list[tuple[str, Any]]:
method __eq__ (line 48) | def __eq__(self, other: object) -> bool:
method __contains__ (line 53) | def __contains__(self, key: str) -> bool:
method __repr__ (line 56) | def __repr__(self) -> str:
function render (line 71) | def render(**kwargs: Any) -> ClickArgs | dict[str, Any]:
FILE: manim/cli/render/global_options.py
function validate_gui_location (line 18) | def validate_gui_location(
FILE: manim/cli/render/render_options.py
function validate_scene_range (line 20) | def validate_scene_range(
function validate_resolution (line 66) | def validate_resolution(
FILE: manim/constants.py
class QualityDict (line 198) | class QualityDict(TypedDict):
class RendererType (line 258) | class RendererType(Enum):
class LineJointType (line 278) | class LineJointType(Enum):
class CapStyleType (line 314) | class CapStyleType(Enum):
FILE: manim/data_structures.py
class MethodWithArgs (line 12) | class MethodWithArgs:
FILE: manim/mobject/frame.py
class ScreenRectangle (line 18) | class ScreenRectangle(Rectangle):
method __init__ (line 19) | def __init__(
method aspect_ratio (line 25) | def aspect_ratio(self) -> float:
method aspect_ratio (line 34) | def aspect_ratio(self, value: float) -> None:
class FullScreenRectangle (line 38) | class FullScreenRectangle(ScreenRectangle):
method __init__ (line 39) | def __init__(self, **kwargs: Any) -> None:
FILE: manim/mobject/geometry/arc.py
class TipableVMobject (line 82) | class TipableVMobject(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 100) | def __init__(
method add_tip (line 114) | def add_tip(
method create_tip (line 135) | def create_tip(
method get_unpositioned_tip (line 149) | def get_unpositioned_tip(
method position_tip (line 178) | def position_tip(self, tip: tips.ArrowTip, at_start: bool = False) -> ...
method reset_endpoints_based_on_tip (line 208) | def reset_endpoints_based_on_tip(self, tip: tips.ArrowTip, at_start: b...
method assign_tip_attr (line 219) | def assign_tip_attr(self, tip: tips.ArrowTip, at_start: bool) -> Self:
method has_tip (line 228) | def has_tip(self) -> bool:
method has_start_tip (line 231) | def has_start_tip(self) -> bool:
method pop_tips (line 236) | def pop_tips(self) -> VGroup:
method get_tips (line 249) | def get_tips(self) -> VGroup:
method get_tip (line 260) | def get_tip(self) -> VMobject:
method get_default_tip_length (line 271) | def get_default_tip_length(self) -> float:
method get_first_handle (line 274) | def get_first_handle(self) -> Point3D:
method get_last_handle (line 281) | def get_last_handle(self) -> Point3D:
method get_end (line 288) | def get_end(self) -> Point3D:
method get_start (line 294) | def get_start(self) -> Point3D:
method get_length (line 300) | def get_length(self) -> float:
class Arc (line 305) | class Arc(TipableVMobject):
method __init__ (line 320) | def __init__(
method generate_points (line 339) | def generate_points(self) -> None:
method init_points (line 347) | def init_points(self) -> None:
method _create_quadratic_bezier_points (line 359) | def _create_quadratic_bezier_points(
method _set_pre_positioned_points (line 381) | def _set_pre_positioned_points(self) -> None:
method get_arc_center (line 405) | def get_arc_center(self, warning: bool = True) -> Point3D:
method move_arc_center_to (line 433) | def move_arc_center_to(self, point: Point3DLike) -> Self:
method stop_angle (line 437) | def stop_angle(self) -> float:
class ArcBetweenPoints (line 444) | class ArcBetweenPoints(Arc):
method __init__ (line 463) | def __init__(
class TangentialArc (line 503) | class TangentialArc(ArcBetweenPoints):
method __init__ (line 551) | def __init__(
class CurvedArrow (line 595) | class CurvedArrow(ArcBetweenPoints):
method __init__ (line 596) | def __init__(
class CurvedDoubleArrow (line 606) | class CurvedDoubleArrow(CurvedArrow):
method __init__ (line 607) | def __init__(
class Circle (line 619) | class Circle(Arc):
method __init__ (line 644) | def __init__(
method surround (line 658) | def surround(
method point_at_angle (line 710) | def point_at_angle(self, angle: float) -> Point3D:
method from_three_points (line 744) | def from_three_points(
class Dot (line 774) | class Dot(Circle):
method __init__ (line 805) | def __init__(
class AnnotationDot (line 824) | class AnnotationDot(Dot):
method __init__ (line 827) | def __init__(
class LabeledDot (line 844) | class LabeledDot(Dot):
method __init__ (line 879) | def __init__(
class Ellipse (line 902) | class Ellipse(Circle):
method __init__ (line 927) | def __init__(self, width: float = 2, height: float = 1, **kwargs: Any)...
class AnnularSector (line 933) | class AnnularSector(Arc):
method __init__ (line 979) | def __init__(
method generate_points (line 1001) | def generate_points(self) -> None:
method init_points (line 1017) | def init_points(self) -> None:
class Sector (line 1021) | class Sector(AnnularSector):
method __init__ (line 1038) | def __init__(self, radius: float = 1, **kwargs: Any) -> None:
class Annulus (line 1042) | class Annulus(Circle):
method __init__ (line 1066) | def __init__(
method generate_points (line 1083) | def generate_points(self) -> None:
method init_points (line 1092) | def init_points(self) -> None:
class CubicBezier (line 1096) | class CubicBezier(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 1119) | def __init__(
class ArcPolygon (line 1131) | class ArcPolygon(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 1210) | def __init__(
class ArcPolygonFromArcs (line 1252) | class ArcPolygonFromArcs(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 1357) | def __init__(self, *arcs: Arc | ArcBetweenPoints, **kwargs: Any) -> None:
FILE: manim/mobject/geometry/boolean_ops.py
class _BooleanOps (line 23) | class _BooleanOps(VMobject, metaclass=ConvertToOpenGL):
method _convert_2d_to_3d_array (line 29) | def _convert_2d_to_3d_array(
method _convert_vmobject_to_skia_path (line 63) | def _convert_vmobject_to_skia_path(self, vmobject: VMobject) -> SkiaPath:
method _convert_skia_path_to_vmobject (line 112) | def _convert_skia_path_to_vmobject(self, path: SkiaPath) -> VMobject:
class Union (line 150) | class Union(_BooleanOps):
method __init__ (line 181) | def __init__(self, *vmobjects: VMobject, **kwargs: Any) -> None:
class Difference (line 193) | class Difference(_BooleanOps):
method __init__ (line 220) | def __init__(self, subject: VMobject, clip: VMobject, **kwargs: Any) -...
class Intersection (line 231) | class Intersection(_BooleanOps):
method __init__ (line 262) | def __init__(self, *vmobjects: VMobject, **kwargs: Any) -> None:
class Exclusion (line 286) | class Exclusion(_BooleanOps):
method __init__ (line 315) | def __init__(self, subject: VMobject, clip: VMobject, **kwargs: Any) -...
FILE: manim/mobject/geometry/labeled.py
class Label (line 28) | class Label(VGroup):
method __init__ (line 62) | def __init__(
class LabeledLine (line 115) | class LabeledLine(Line):
method __init__ (line 156) | def __init__(
class LabeledArrow (line 185) | class LabeledArrow(LabeledLine, Arrow):
method __init__ (line 219) | def __init__(
class LabeledPolygram (line 227) | class LabeledPolygram(Polygram):
method __init__ (line 343) | def __init__(
FILE: manim/mobject/geometry/line.py
class Line (line 65) | class Line(TipableVMobject):
method __init__ (line 95) | def __init__(
method generate_points (line 109) | def generate_points(self) -> None:
method set_points_by_ends (line 117) | def set_points_by_ends(
method init_points (line 148) | def init_points(self) -> None:
method _account_for_buff (line 151) | def _account_for_buff(self, buff: float) -> None:
method _set_start_and_end_attrs (line 160) | def _set_start_and_end_attrs(
method _pointify (line 174) | def _pointify(
method set_path_arc (line 198) | def set_path_arc(self, new_value: float) -> None:
method put_start_and_end_on (line 202) | def put_start_and_end_on(
method get_vector (line 237) | def get_vector(self) -> Vector3D:
method get_unit_vector (line 240) | def get_unit_vector(self) -> Vector3D:
method get_angle (line 243) | def get_angle(self) -> float:
method get_projection (line 246) | def get_projection(self, point: Point3DLike) -> Point3D:
method get_slope (line 259) | def get_slope(self) -> float:
method set_angle (line 262) | def set_angle(self, angle: float, about_point: Point3DLike | None = No...
method set_length (line 273) | def set_length(self, length: float) -> Self:
class DashedLine (line 278) | class DashedLine(Line):
method __init__ (line 312) | def __init__(
method _calculate_num_dashes (line 330) | def _calculate_num_dashes(self) -> int:
method get_start (line 346) | def get_start(self) -> Point3D:
method get_end (line 361) | def get_end(self) -> Point3D:
method get_first_handle (line 376) | def get_first_handle(self) -> Point3D:
method get_last_handle (line 392) | def get_last_handle(self) -> Point3D:
class TangentLine (line 409) | class TangentLine(Line):
method __init__ (line 442) | def __init__(
class Elbow (line 461) | class Elbow(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 491) | def __init__(self, width: float = 0.2, angle: float = 0, **kwargs: Any...
class Arrow (line 499) | class Arrow(Line):
method __init__ (line 587) | def __init__(
method scale (line 606) | def scale(self, factor: float, scale_tips: bool = False, **kwargs: Any...
method get_normal_vector (line 658) | def get_normal_vector(self) -> Vector3D:
method reset_normal_vector (line 671) | def reset_normal_vector(self) -> Self:
method get_default_tip_length (line 676) | def get_default_tip_length(self) -> float:
method _set_stroke_width_from_length (line 690) | def _set_stroke_width_from_length(self) -> Self:
class Vector (line 710) | class Vector(Arrow):
method __init__ (line 740) | def __init__(
method coordinate_label (line 752) | def coordinate_label(
class DoubleArrow (line 815) | class DoubleArrow(Arrow):
method __init__ (line 860) | def __init__(self, *args: Any, **kwargs: Any) -> None:
class Angle (line 868) | class Angle(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 977) | def __init__(
method get_lines (line 1075) | def get_lines(self) -> VGroup:
method get_value (line 1094) | def get_value(self, degrees: bool = False) -> float:
method from_three_points (line 1128) | def from_three_points(
class RightAngle (line 1168) | class RightAngle(Angle):
method __init__ (line 1205) | def __init__(
FILE: manim/mobject/geometry/polygram.py
class Polygram (line 48) | class Polygram(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 83) | def __init__(
method get_vertices (line 102) | def get_vertices(self) -> Point3D_Array:
method get_vertex_groups (line 123) | def get_vertex_groups(self) -> list[Point3D_Array]:
method round_corners (line 165) | def round_corners(
class Polygon (line 302) | class Polygon(Polygram):
method __init__ (line 332) | def __init__(self, *vertices: Point3DLike, **kwargs: Any) -> None:
class RegularPolygram (line 336) | class RegularPolygram(Polygram):
method __init__ (line 368) | def __init__(
class RegularPolygon (line 427) | class RegularPolygon(RegularPolygram):
method __init__ (line 452) | def __init__(self, n: int = 6, **kwargs: Any) -> None:
class Star (line 456) | class Star(Polygon):
method __init__ (line 514) | def __init__(
class Triangle (line 561) | class Triangle(RegularPolygon):
method __init__ (line 582) | def __init__(self, **kwargs: Any) -> None:
class Rectangle (line 586) | class Rectangle(Polygon):
method __init__ (line 624) | def __init__(
class Square (line 681) | class Square(Rectangle):
method __init__ (line 704) | def __init__(self, side_length: float = 2.0, **kwargs: Any) -> None:
method side_length (line 708) | def side_length(self) -> float:
method side_length (line 712) | def side_length(self, value: float) -> None:
class RoundedRectangle (line 716) | class RoundedRectangle(Rectangle):
method __init__ (line 740) | def __init__(self, corner_radius: float | list[float] = 0.5, **kwargs:...
class Cutout (line 746) | class Cutout(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 781) | def __init__(
class ConvexHull (line 793) | class ConvexHull(Polygram):
method __init__ (line 831) | def __init__(
FILE: manim/mobject/geometry/shape_matchers.py
class SurroundingRectangle (line 26) | class SurroundingRectangle(RoundedRectangle):
method __init__ (line 50) | def __init__(
class BackgroundRectangle (line 83) | class BackgroundRectangle(SurroundingRectangle):
method __init__ (line 108) | def __init__(
method pointwise_become_partial (line 132) | def pointwise_become_partial(self, mobject: Mobject, a: Any, b: float)...
method set_style (line 136) | def set_style(self, fill_opacity: float, **kwargs: Any) -> Self: # ty...
class Cross (line 153) | class Cross(VGroup):
method __init__ (line 178) | def __init__(
class Underline (line 195) | class Underline(Line):
method __init__ (line 210) | def __init__(
FILE: manim/mobject/geometry/tips.py
class ArrowTip (line 31) | class ArrowTip(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 115) | def __init__(self, *args: Any, **kwargs: Any) -> None:
method base (line 119) | def base(self) -> Point3D:
method tip_point (line 137) | def tip_point(self) -> Point3D:
method vector (line 157) | def vector(self) -> Vector3D:
method tip_angle (line 173) | def tip_angle(self) -> float:
method length (line 189) | def length(self) -> float:
class StealthTip (line 205) | class StealthTip(ArrowTip):
method __init__ (line 212) | def __init__(
method length (line 238) | def length(self) -> float:
class ArrowTriangleTip (line 248) | class ArrowTriangleTip(ArrowTip, Triangle):
method __init__ (line 251) | def __init__(
class ArrowTriangleFilledTip (line 273) | class ArrowTriangleFilledTip(ArrowTriangleTip):
method __init__ (line 279) | def __init__(
class ArrowCircleTip (line 285) | class ArrowCircleTip(ArrowTip, Circle):
method __init__ (line 288) | def __init__(
class ArrowCircleFilledTip (line 304) | class ArrowCircleFilledTip(ArrowCircleTip):
method __init__ (line 307) | def __init__(
class ArrowSquareTip (line 313) | class ArrowSquareTip(ArrowTip, Square):
method __init__ (line 316) | def __init__(
class ArrowSquareFilledTip (line 336) | class ArrowSquareFilledTip(ArrowSquareTip):
method __init__ (line 339) | def __init__(
FILE: manim/mobject/graph.py
class LayoutFunction (line 38) | class LayoutFunction(Protocol):
method __call__ (line 260) | def __call__(
function _partite_layout (line 284) | def _partite_layout(
function _random_layout (line 310) | def _random_layout(nx_graph: NxGraph, scale: float = 2, **kwargs: Any):
function _tree_layout (line 319) | def _tree_layout(
function _determine_graph_layout (line 444) | def _determine_graph_layout(
class GenericGraph (line 479) | class GenericGraph(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 563) | def __init__(
method _empty_networkx_graph (line 662) | def _empty_networkx_graph() -> nx.classes.graph.Graph:
method _populate_edge_dict (line 666) | def _populate_edge_dict(
method __getitem__ (line 672) | def __getitem__(self: Graph, v: Hashable) -> Mobject:
method _create_vertex (line 675) | def _create_vertex(
method _add_created_vertex (line 720) | def _add_created_vertex(
method _add_vertex (line 746) | def _add_vertex(
method _create_vertices (line 795) | def _create_vertices(
method add_vertices (line 849) | def add_vertices(
method _add_vertices_animation (line 901) | def _add_vertices_animation(self, *args, anim_args=None, **kwargs):
method _remove_vertex (line 920) | def _remove_vertex(self, vertex):
method remove_vertices (line 956) | def remove_vertices(self, *vertices):
method _remove_vertices_animation (line 982) | def _remove_vertices_animation(self, *vertices, anim_args=None):
method _add_edge (line 993) | def _add_edge(
method add_edges (line 1044) | def add_edges(
method _add_edges_animation (line 1106) | def _add_edges_animation(self, *args, anim_args=None, **kwargs):
method _remove_edge (line 1116) | def _remove_edge(self, edge: tuple[Hashable]):
method remove_edges (line 1143) | def remove_edges(self, *edges: tuple[Hashable]):
method _remove_edges_animation (line 1161) | def _remove_edges_animation(self, *edges, anim_args=None):
method from_networkx (line 1171) | def from_networkx(
method change_layout (line 1206) | def change_layout(
class Graph (line 1252) | class Graph(GenericGraph):
method _empty_networkx_graph (line 1536) | def _empty_networkx_graph() -> nx.Graph:
method _populate_edge_dict (line 1539) | def _populate_edge_dict(
method update_edges (line 1552) | def update_edges(self, graph):
method __repr__ (line 1562) | def __repr__(self: Graph) -> str:
class DiGraph (line 1566) | class DiGraph(GenericGraph):
method _empty_networkx_graph (line 1743) | def _empty_networkx_graph() -> nx.DiGraph:
method _populate_edge_dict (line 1746) | def _populate_edge_dict(
method update_edges (line 1762) | def update_edges(self, graph):
method __repr__ (line 1780) | def __repr__(self: DiGraph) -> str:
FILE: manim/mobject/graphing/coordinate_systems.py
class CoordinateSystem (line 72) | class CoordinateSystem:
method __init__ (line 122) | def __init__(
method coords_to_point (line 158) | def coords_to_point(self, *coords: ManimFloat) -> Point3D:
method point_to_coords (line 163) | def point_to_coords(self, point: Point3DLike) -> list[ManimFloat]:
method polar_to_point (line 166) | def polar_to_point(self, radius: float, azimuth: float) -> Point2D:
method point_to_polar (line 197) | def point_to_polar(self, point: Point2DLike) -> Point2D:
method c2p (line 213) | def c2p(
method p2c (line 219) | def p2c(self, point: Point3DLike) -> list[ManimFloat]:
method pr2pt (line 223) | def pr2pt(self, radius: float, azimuth: float) -> np.ndarray:
method pt2pr (line 227) | def pt2pr(self, point: np.ndarray) -> Point2D:
method get_axes (line 231) | def get_axes(self) -> VGroup:
method get_axis (line 234) | def get_axis(self, index: int) -> NumberLine:
method get_origin (line 238) | def get_origin(self) -> Point3D:
method get_x_axis (line 248) | def get_x_axis(self) -> NumberLine:
method get_y_axis (line 251) | def get_y_axis(self) -> NumberLine:
method get_z_axis (line 254) | def get_z_axis(self) -> NumberLine:
method get_x_unit_size (line 257) | def get_x_unit_size(self) -> float:
method get_y_unit_size (line 260) | def get_y_unit_size(self) -> float:
method get_x_axis_label (line 263) | def get_x_axis_label(
method get_y_axis_label (line 306) | def get_y_axis_label(
method _get_axis_label (line 352) | def _get_axis_label(
method get_axis_labels (line 387) | def get_axis_labels(self) -> VGroup:
method add_coordinates (line 390) | def add_coordinates(
method get_line_from_axis_to_point (line 465) | def get_line_from_axis_to_point(
method get_line_from_axis_to_point (line 475) | def get_line_from_axis_to_point(
method get_line_from_axis_to_point (line 485) | def get_line_from_axis_to_point( # type: ignore[no-untyped-def]
method get_vertical_line (line 533) | def get_vertical_line(self, point: Point3DLike, **kwargs: Any) -> Line:
method get_horizontal_line (line 567) | def get_horizontal_line(self, point: Point3DLike, **kwargs: Any) -> Line:
method get_lines_to_point (line 599) | def get_lines_to_point(self, point: Point3DLike, **kwargs: Any) -> VGr...
method plot (line 640) | def plot(
method plot_implicit_curve (line 798) | def plot_implicit_curve(
method plot_parametric_curve (line 848) | def plot_parametric_curve(
method plot_polar_graph (line 896) | def plot_polar_graph(
method plot_surface (line 935) | def plot_surface(
method input_to_graph_point (line 1023) | def input_to_graph_point(
method input_to_graph_coords (line 1081) | def input_to_graph_coords(
method i2gc (line 1099) | def i2gc(self, x: float, graph: ParametricFunction) -> tuple[float, fl...
method i2gp (line 1103) | def i2gp(self, x: float, graph: ParametricFunction) -> np.ndarray:
method get_graph_label (line 1107) | def get_graph_label(
method get_riemann_rectangles (line 1189) | def get_riemann_rectangles(
method get_area (line 1352) | def get_area(
method angle_of_tangent (line 1439) | def angle_of_tangent(
method slope_of_tangent (line 1475) | def slope_of_tangent(
method plot_derivative_graph (line 1505) | def plot_derivative_graph(
method plot_antiderivative_graph (line 1552) | def plot_antiderivative_graph(
method get_secant_slope_group (line 1612) | def get_secant_slope_group(
method get_vertical_lines_to_graph (line 1735) | def get_vertical_lines_to_graph(
method get_T_label (line 1790) | def get_T_label(
method __matmul__ (line 1864) | def __matmul__(self, coord: Point3DLike | Mobject) -> Point3DLike:
method __rmatmul__ (line 1869) | def __rmatmul__(self, point: Point3DLike) -> Point3DLike:
method _origin_shift (line 1873) | def _origin_shift(axis_range: Sequence[float]) -> float: ...
class Axes (line 1876) | class Axes(VGroup, CoordinateSystem, metaclass=ConvertToOpenGL):
method __init__ (line 1931) | def __init__(
method _update_default_configs (line 2010) | def _update_default_configs(
method _create_axis (line 2045) | def _create_axis(
method coords_to_point (line 2075) | def coords_to_point(
method point_to_coords (line 2193) | def point_to_coords(self, point: Sequence[float]) -> np.ndarray:
method get_axes (line 2246) | def get_axes(self) -> VGroup:
method get_axis_labels (line 2256) | def get_axis_labels(
method plot_line_graph (line 2303) | def plot_line_graph(
method _origin_shift (line 2395) | def _origin_shift(axis_range: Sequence[float]) -> float:
class ThreeDAxes (line 2413) | class ThreeDAxes(Axes):
method __init__ (line 2446) | def __init__(
method _add_3d_pieces (line 2518) | def _add_3d_pieces(self) -> None:
method _set_axis_shading (line 2525) | def _set_axis_shading(self) -> None:
method get_y_axis_label (line 2539) | def get_y_axis_label(
method get_z_axis_label (line 2589) | def get_z_axis_label(
method get_axis_labels (line 2639) | def get_axis_labels(
class NumberPlane (line 2694) | class NumberPlane(Axes):
method __init__ (line 2761) | def __init__(
method _init_background_lines (line 2824) | def _init_background_lines(self) -> None:
method _get_lines (line 2848) | def _get_lines(self) -> tuple[VGroup, VGroup]:
method _get_lines_parallel_to_axis (line 2883) | def _get_lines_parallel_to_axis(
method get_vector (line 2944) | def get_vector(self, coords: Sequence[ManimFloat], **kwargs: Any) -> A...
method prepare_for_nonlinear_transform (line 2950) | def prepare_for_nonlinear_transform(self, num_inserted_curves: int = 5...
class PolarPlane (line 2958) | class PolarPlane(Axes):
method __init__ (line 3032) | def __init__(
method _init_background_lines (line 3121) | def _init_background_lines(self) -> None:
method _get_lines (line 3144) | def _get_lines(self) -> tuple[VGroup, VGroup]:
method get_axes (line 3191) | def get_axes(self) -> VGroup:
method get_vector (line 3201) | def get_vector(self, coords: Sequence[ManimFloat], **kwargs: Any) -> A...
method prepare_for_nonlinear_transform (line 3207) | def prepare_for_nonlinear_transform(self, num_inserted_curves: int = 5...
method get_coordinate_labels (line 3214) | def get_coordinate_labels(
method add_coordinates (line 3317) | def add_coordinates(
method get_radian_label (line 3334) | def get_radian_label(
class ComplexPlane (line 3379) | class ComplexPlane(NumberPlane):
method __init__ (line 3405) | def __init__(self, **kwargs: Any):
method number_to_point (line 3410) | def number_to_point(self, number: float | complex) -> np.ndarray:
method n2p (line 3426) | def n2p(self, number: float | complex) -> np.ndarray:
method point_to_number (line 3430) | def point_to_number(self, point: Point3DLike) -> complex:
method p2n (line 3446) | def p2n(self, point: Point3DLike) -> complex:
method _get_default_coordinate_values (line 3450) | def _get_default_coordinate_values(self) -> list[float | complex]:
method get_coordinate_labels (line 3463) | def get_coordinate_labels(
method add_coordinates (line 3498) | def add_coordinates(
FILE: manim/mobject/graphing/functions.py
class ParametricFunction (line 28) | class ParametricFunction(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 106) | def __init__(
method get_function (line 135) | def get_function(self) -> Callable[[float], Point3D]:
method get_point_from_function (line 138) | def get_point_from_function(self, t: float) -> Point3D:
method generate_points (line 141) | def generate_points(self) -> Self:
method init_points (line 183) | def init_points(self) -> None:
class FunctionGraph (line 187) | class FunctionGraph(ParametricFunction):
method __init__ (line 216) | def __init__(
method get_function (line 233) | def get_function(self) -> Callable[[float], Any]:
method get_point_from_function (line 236) | def get_point_from_function(self, x: float) -> Point3D:
class ImplicitFunction (line 240) | class ImplicitFunction(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 241) | def __init__(
method generate_points (line 308) | def generate_points(self) -> Self:
method init_points (line 330) | def init_points(self) -> None:
FILE: manim/mobject/graphing/number_line.py
class NumberLine (line 35) | class NumberLine(Line):
method __init__ (line 141) | def __init__(
method rotate_about_zero (line 277) | def rotate_about_zero(
method rotate_about_number (line 282) | def rotate_about_number(
method add_ticks (line 287) | def add_ticks(self) -> None:
method get_tick (line 304) | def get_tick(self, x: float, size: float | None = None) -> Line:
method get_tick_marks (line 327) | def get_tick_marks(self) -> VGroup:
method get_tick_range (line 330) | def get_tick_range(self) -> np.ndarray:
method number_to_point (line 358) | def number_to_point(self, number: float | np.ndarray) -> np.ndarray:
method point_to_number (line 397) | def point_to_number(self, point: Sequence[float]) -> float:
method n2p (line 432) | def n2p(self, number: float | np.ndarray) -> Point3D:
method p2n (line 436) | def p2n(self, point: Point3DLike) -> float:
method get_unit_size (line 440) | def get_unit_size(self) -> float:
method get_unit_vector (line 444) | def get_unit_vector(self) -> Vector3D:
method get_number_mobject (line 447) | def get_number_mobject(
method get_number_mobjects (line 505) | def get_number_mobjects(self, *numbers: float, **kwargs: Any) -> VGroup:
method get_labels (line 510) | def get_labels(self) -> VGroup:
method add_numbers (line 513) | def add_numbers(
method add_labels (line 568) | def add_labels(
method _create_label_tex (line 629) | def _create_label_tex(
method _decimal_places_from_step (line 663) | def _decimal_places_from_step(step: float) -> int:
method __matmul__ (line 669) | def __matmul__(self, other: float) -> Point3D:
method __rmatmul__ (line 672) | def __rmatmul__(self, other: Point3DLike | Mobject) -> float:
class UnitInterval (line 678) | class UnitInterval(NumberLine):
method __init__ (line 679) | def __init__(
FILE: manim/mobject/graphing/probability.py
class SampleSpace (line 37) | class SampleSpace(Rectangle):
method __init__ (line 56) | def __init__(
method add_title (line 76) | def add_title(
method add_label (line 87) | def add_label(self, label: str) -> None:
method complete_p_list (line 90) | def complete_p_list(self, p_list: float | Iterable[float]) -> list[flo...
method get_division_along_dimension (line 98) | def get_division_along_dimension(
method get_horizontal_division (line 120) | def get_horizontal_division(
method get_vertical_division (line 128) | def get_vertical_division(
method divide_horizontally (line 136) | def divide_horizontally(self, *args: Any, **kwargs: Any) -> None:
method divide_vertically (line 140) | def divide_vertically(self, *args: Any, **kwargs: Any) -> None:
method get_subdivision_braces_and_labels (line 144) | def get_subdivision_braces_and_labels(
method get_side_braces_and_labels (line 175) | def get_side_braces_and_labels(
method get_top_braces_and_labels (line 187) | def get_top_braces_and_labels(
method get_bottom_braces_and_labels (line 194) | def get_bottom_braces_and_labels(
method add_braces_and_labels (line 201) | def add_braces_and_labels(self) -> None:
method __getitem__ (line 210) | def __getitem__(self, index: int) -> VMobject:
class BarChart (line 218) | class BarChart(Axes):
method __init__ (line 269) | def __init__(
method _update_colors (line 344) | def _update_colors(self) -> None:
method _add_x_axis_labels (line 354) | def _add_x_axis_labels(self) -> None:
method _create_bar (line 388) | def _create_bar(self, bar_number: int, value: float) -> Rectangle:
method _add_bars (line 421) | def _add_bars(self) -> None:
method get_bar_labels (line 429) | def get_bar_labels(
method change_bar_values (line 482) | def change_bar_values(
FILE: manim/mobject/graphing/scale.py
class _ScaleBase (line 19) | class _ScaleBase:
method __init__ (line 28) | def __init__(self, custom_labels: bool = False):
method function (line 32) | def function(self, value: float) -> float: ...
method function (line 35) | def function(self, value: np.ndarray) -> np.ndarray: ...
method function (line 37) | def function(self, value: float) -> float:
method inverse_function (line 57) | def inverse_function(self, value: float) -> float:
method get_custom_labels (line 67) | def get_custom_labels(
class LinearBase (line 93) | class LinearBase(_ScaleBase):
method __init__ (line 94) | def __init__(self, scale_factor: float = 1.0):
method function (line 105) | def function(self, value: float) -> float:
method inverse_function (line 115) | def inverse_function(self, value: float) -> float:
class LogBase (line 126) | class LogBase(_ScaleBase):
method __init__ (line 127) | def __init__(self, base: float = 10, custom_labels: bool = True):
method function (line 149) | def function(self, value: float) -> float:
method inverse_function (line 154) | def inverse_function(self, value: float) -> float:
method get_custom_labels (line 175) | def get_custom_labels(
FILE: manim/mobject/logo.py
class ManimBanner (line 107) | class ManimBanner(VGroup):
method __init__ (line 144) | def __init__(self, dark_theme: bool = True):
method scale (line 187) | def scale(self, scale_factor: float, **kwargs: Any) -> ManimBanner:
method create (line 207) | def create(self, run_time: float = 2) -> AnimationGroup:
method expand (line 226) | def expand(self, run_time: float = 1.5, direction: str = "center") -> ...
FILE: manim/mobject/matrix.py
function matrix_to_tex_string (line 60) | def matrix_to_tex_string(matrix: np.ndarray) -> str:
function matrix_to_mobject (line 71) | def matrix_to_mobject(matrix: np.ndarray) -> MathTex:
class Matrix (line 75) | class Matrix(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 165) | def __init__(
method _matrix_to_mob_matrix (line 209) | def _matrix_to_mob_matrix(
method _organize_mob_matrix (line 220) | def _organize_mob_matrix(self, matrix: list[list[VMobject]]) -> Self:
method _add_brackets (line 230) | def _add_brackets(self, left: str = "[", right: str = "]", **kwargs: A...
method get_columns (line 284) | def get_columns(self) -> VGroup:
method set_column_colors (line 311) | def set_column_colors(self, *colors: str) -> Self:
method get_rows (line 341) | def get_rows(self) -> VGroup:
method set_row_colors (line 363) | def set_row_colors(self, *colors: str) -> Self:
method add_background_to_entries (line 393) | def add_background_to_entries(self) -> Self:
method get_mob_matrix (line 406) | def get_mob_matrix(self) -> list[list[VMobject]]:
method get_entries (line 416) | def get_entries(self) -> VGroup:
method get_brackets (line 441) | def get_brackets(self) -> VGroup:
class DecimalMatrix (line 467) | class DecimalMatrix(Matrix):
method __init__ (line 486) | def __init__(
class IntegerMatrix (line 513) | class IntegerMatrix(Matrix):
method __init__ (line 531) | def __init__(
class MobjectMatrix (line 550) | class MobjectMatrix(Matrix):
method __init__ (line 569) | def __init__(
function get_det_text (line 578) | def get_det_text(
FILE: manim/mobject/mobject.py
class Mobject (line 72) | class Mobject:
method __init_subclass__ (line 100) | def __init_subclass__(cls, **kwargs: Any) -> None:
method __init__ (line 107) | def __init__(
method _assert_valid_submobjects (line 129) | def _assert_valid_submobjects(self, submobjects: Iterable[Mobject]) ->...
method _assert_valid_submobjects_internal (line 161) | def _assert_valid_submobjects_internal(
method animation_override_for (line 187) | def animation_override_for(
method _add_intrinsic_animation_overrides (line 210) | def _add_intrinsic_animation_overrides(cls) -> None:
method add_animation_override (line 225) | def add_animation_override(
method set_default (line 258) | def set_default(cls, **kwargs: Any) -> None:
method animate (line 309) | def animate(self) -> _AnimationBuilder | Self:
method always (line 409) | def always(self) -> Self:
method __deepcopy__ (line 444) | def __deepcopy__(self, clone_from_id: dict[int, Mobject]) -> Self:
method __repr__ (line 453) | def __repr__(self) -> str:
method reset_points (line 456) | def reset_points(self) -> Self:
method init_colors (line 461) | def init_colors(self, propagate_colors: bool = True) -> object:
method generate_points (line 468) | def generate_points(self) -> object:
method add (line 475) | def add(self, *mobjects: Mobject) -> Self:
method insert (line 563) | def insert(self, index: int, mobject: Mobject) -> None:
method __add__ (line 581) | def __add__(self, mobject: Mobject) -> Self:
method __iadd__ (line 584) | def __iadd__(self, mobject: Mobject) -> Self:
method add_to_back (line 587) | def add_to_back(self, *mobjects: Mobject) -> Self:
method remove (line 637) | def remove(self, *mobjects: Mobject) -> Self:
method __sub__ (line 664) | def __sub__(self, other: Mobject) -> Self:
method __isub__ (line 667) | def __isub__(self, other: Mobject) -> Self:
method set (line 670) | def set(self, **kwargs: Any) -> Self:
method __getattr__ (line 726) | def __getattr__(self, attr: str) -> types.MethodType:
method width (line 774) | def width(self) -> float:
method width (line 806) | def width(self, value: float) -> None:
method height (line 810) | def height(self) -> float:
method height (line 842) | def height(self, value: float) -> None:
method depth (line 846) | def depth(self) -> float:
method depth (line 862) | def depth(self, value: float) -> None:
method get_array_attrs (line 866) | def get_array_attrs(self) -> list[str]:
method apply_over_attr_arrays (line 869) | def apply_over_attr_arrays(self, func: MultiMappingFunction) -> Self:
method get_image (line 875) | def get_image(self, camera: Camera | None = None) -> Image.Image:
method show (line 881) | def show(self, camera: Camera | None = None) -> None:
method save_image (line 884) | def save_image(self, name: str | None = None) -> None:
method copy (line 892) | def copy(self) -> Self:
method generate_target (line 907) | def generate_target(self, use_deepcopy: bool = False) -> Self:
method update (line 917) | def update(self, dt: float = 0, recursive: bool = True) -> Self:
method get_time_based_updaters (line 955) | def get_time_based_updaters(self) -> list[_TimeBasedUpdater]:
method has_time_based_updater (line 978) | def has_time_based_updater(self) -> bool:
method get_updaters (line 996) | def get_updaters(self) -> list[_Updater]:
method get_family_updaters (line 1012) | def get_family_updaters(self) -> list[_Updater]:
method add_updater (line 1015) | def add_updater(
method remove_updater (line 1099) | def remove_updater(self, update_function: _Updater) -> Self:
method clear_updaters (line 1126) | def clear_updaters(self, recursive: bool = True) -> Self:
method match_updaters (line 1152) | def match_updaters(self, mobject: Mobject) -> Self:
method suspend_updating (line 1181) | def suspend_updating(self, recursive: bool = True) -> Self:
method resume_updating (line 1207) | def resume_updating(self, recursive: bool = True) -> Self:
method apply_to_family (line 1235) | def apply_to_family(self, func: Callable[[Mobject], None]) -> None:
method shift (line 1257) | def shift(self, *vectors: Vector3DLike) -> Self:
method scale (line 1282) | def scale(
method rotate_about_origin (line 1335) | def rotate_about_origin(self, angle: float, axis: Vector3DLike = OUT) ...
method rotate (line 1339) | def rotate(
method flip (line 1411) | def flip(
method stretch (line 1438) | def stretch(
method apply_function (line 1453) | def apply_function(
method apply_function_to_position (line 1475) | def apply_function_to_position(self, function: MappingFunction) -> Self:
method apply_function_to_submobject_positions (line 1479) | def apply_function_to_submobject_positions(self, function: MappingFunc...
method apply_matrix (line 1484) | def apply_matrix(
method apply_complex_function (line 1502) | def apply_complex_function(
method reverse_points (line 1544) | def reverse_points(self) -> Self:
method repeat (line 1549) | def repeat(self, count: int) -> Self:
method apply_points_function_about_point (line 1564) | def apply_points_function_about_point(
method pose_at_angle (line 1582) | def pose_at_angle(self, **kwargs: Any) -> Self:
method center (line 1588) | def center(self) -> Self:
method align_on_border (line 1599) | def align_on_border(
method to_corner (line 1616) | def to_corner(
method to_edge (line 1644) | def to_edge(
method next_to (line 1674) | def next_to(
method shift_onto_screen (line 1728) | def shift_onto_screen(self, **kwargs: Any) -> Self:
method is_off_screen (line 1739) | def is_off_screen(self) -> bool:
method stretch_about_point (line 1749) | def stretch_about_point(self, factor: float, dim: int, point: Point3DL...
method rescale_to_fit (line 1752) | def rescale_to_fit(
method scale_to_fit_width (line 1764) | def scale_to_fit_width(self, width: float, **kwargs: Any) -> Self:
method stretch_to_fit_width (line 1789) | def stretch_to_fit_width(self, width: float, **kwargs: Any) -> Self:
method scale_to_fit_height (line 1814) | def scale_to_fit_height(self, height: float, **kwargs: Any) -> Self:
method stretch_to_fit_height (line 1839) | def stretch_to_fit_height(self, height: float, **kwargs: Any) -> Self:
method scale_to_fit_depth (line 1864) | def scale_to_fit_depth(self, depth: float, **kwargs: Any) -> Self:
method stretch_to_fit_depth (line 1868) | def stretch_to_fit_depth(self, depth: float, **kwargs: Any) -> Self:
method set_coord (line 1872) | def set_coord(
method set_x (line 1881) | def set_x(self, x: float, direction: Vector3DLike = ORIGIN) -> Self:
method set_y (line 1885) | def set_y(self, y: float, direction: Vector3DLike = ORIGIN) -> Self:
method set_z (line 1889) | def set_z(self, z: float, direction: Vector3DLike = ORIGIN) -> Self:
method space_out_submobjects (line 1893) | def space_out_submobjects(self, factor: float = 1.5, **kwargs: Any) ->...
method move_to (line 1899) | def move_to(
method replace (line 1914) | def replace(
method surround (line 1931) | def surround(
method put_start_and_end_on (line 1943) | def put_start_and_end_on(self, start: Point3DLike, end: Point3DLike) -...
method add_background_rectangle (line 1971) | def add_background_rectangle(
method add_background_rectangle_to_submobjects (line 2014) | def add_background_rectangle_to_submobjects(self, **kwargs: Any) -> Self:
method add_background_rectangle_to_family_members_with_points (line 2019) | def add_background_rectangle_to_family_members_with_points(
method set_color (line 2028) | def set_color(
method set_color_by_gradient (line 2046) | def set_color_by_gradient(self, *colors: ParsableManimColor) -> Self:
method set_colors_by_radial_gradient (line 2059) | def set_colors_by_radial_gradient(
method set_submobject_colors_by_gradient (line 2074) | def set_submobject_colors_by_gradient(self, *colors: ParsableManimColo...
method set_submobject_colors_by_radial_gradient (line 2087) | def set_submobject_colors_by_radial_gradient(
method to_original_color (line 2107) | def to_original_color(self) -> Self:
method fade_to (line 2111) | def fade_to(
method fade (line 2122) | def fade(self, darkness: float = 0.5, family: bool = True) -> Self:
method get_color (line 2128) | def get_color(self) -> ManimColor:
method save_state (line 2144) | def save_state(self) -> Self:
method restore (line 2153) | def restore(self) -> Self:
method reduce_across_dimension (line 2160) | def reduce_across_dimension(
method nonempty_submobjects (line 2185) | def nonempty_submobjects(self) -> Sequence[Mobject]:
method get_merged_array (line 2192) | def get_merged_array(self, array_attr: str) -> np.ndarray:
method get_all_points (line 2203) | def get_all_points(self) -> Point3D_Array:
method get_points_defining_boundary (line 2213) | def get_points_defining_boundary(self) -> Point3D_Array:
method get_num_points (line 2216) | def get_num_points(self) -> int:
method get_extremum_along_dim (line 2219) | def get_extremum_along_dim(
method get_critical_point (line 2238) | def get_critical_point(self, direction: Vector3DLike) -> Point3D:
method get_edge_center (line 2267) | def get_edge_center(self, direction: Vector3DLike) -> Point3D:
method get_corner (line 2271) | def get_corner(self, direction: Vector3DLike) -> Point3D:
method get_center (line 2275) | def get_center(self) -> Point3D:
method get_center_of_mass (line 2279) | def get_center_of_mass(self) -> Point3D:
method get_boundary_point (line 2282) | def get_boundary_point(self, direction: Vector3DLike) -> Point3D:
method get_midpoint (line 2287) | def get_midpoint(self) -> Point3D:
method get_top (line 2310) | def get_top(self) -> Point3D:
method get_bottom (line 2314) | def get_bottom(self) -> Point3D:
method get_right (line 2318) | def get_right(self) -> Point3D:
method get_left (line 2322) | def get_left(self) -> Point3D:
method get_zenith (line 2326) | def get_zenith(self) -> Point3D:
method get_nadir (line 2330) | def get_nadir(self) -> Point3D:
method length_over_dim (line 2334) | def length_over_dim(self, dim: int) -> float:
method get_coord (line 2343) | def get_coord(self, dim: int, direction: Vector3DLike = ORIGIN) -> float:
method get_x (line 2347) | def get_x(self, direction: Vector3DLike = ORIGIN) -> float:
method get_y (line 2351) | def get_y(self, direction: Vector3DLike = ORIGIN) -> float:
method get_z (line 2355) | def get_z(self, direction: Vector3DLike = ORIGIN) -> float:
method get_start (line 2359) | def get_start(self) -> Point3D:
method get_end (line 2364) | def get_end(self) -> Point3D:
method get_start_and_end (line 2369) | def get_start_and_end(self) -> tuple[Point3D, Point3D]:
method point_from_proportion (line 2373) | def point_from_proportion(self, alpha: float) -> Point3D:
method proportion_from_point (line 2376) | def proportion_from_point(self, point: Point3DLike) -> float:
method get_pieces (line 2379) | def get_pieces(self, n_pieces: float) -> Group:
method get_z_index_reference_point (line 2390) | def get_z_index_reference_point(self) -> Point3D:
method has_points (line 2395) | def has_points(self) -> bool:
method has_no_points (line 2399) | def has_no_points(self) -> bool:
method match_color (line 2405) | def match_color(self, mobject: Mobject) -> Self:
method match_dim_size (line 2409) | def match_dim_size(self, mobject: Mobject, dim: int, **kwargs: Any) ->...
method match_width (line 2413) | def match_width(self, mobject: Mobject, **kwargs: Any) -> Self:
method match_height (line 2417) | def match_height(self, mobject: Mobject, **kwargs: Any) -> Self:
method match_depth (line 2421) | def match_depth(self, mobject: Mobject, **kwargs: Any) -> Self:
method match_coord (line 2425) | def match_coord(
method match_x (line 2435) | def match_x(self, mobject: Mobject, direction: Vector3DLike = ORIGIN) ...
method match_y (line 2439) | def match_y(self, mobject: Mobject, direction: Vector3DLike = ORIGIN) ...
method match_z (line 2443) | def match_z(self, mobject: Mobject, direction: Vector3DLike = ORIGIN) ...
method align_to (line 2447) | def align_to(
method __getitem__ (line 2470) | def __getitem__(self, value: Any) -> Mobject | Group:
method __iter__ (line 2478) | def __iter__(self) -> Iterator[Mobject]:
method __len__ (line 2481) | def __len__(self) -> int:
method get_group_class (line 2484) | def get_group_class(self) -> type[Group]:
method get_mobject_type_class (line 2488) | def get_mobject_type_class() -> type[Mobject]:
method split (line 2492) | def split(self) -> list[Mobject]:
method get_family (line 2496) | def get_family(self, recurse: bool = True) -> list[Mobject]:
method family_members_with_points (line 2530) | def family_members_with_points(self) -> list[Mobject]:
method arrange (line 2556) | def arrange(
method arrange_in_grid (line 2586) | def arrange_in_grid(
method sort (line 2841) | def sort(
method shuffle (line 2855) | def shuffle(self, recursive: bool = False) -> None:
method invert (line 2862) | def invert(self, recursive: bool = False) -> None:
method arrange_submobjects (line 2889) | def arrange_submobjects(self, *args: Any, **kwargs: Any) -> Self:
method sort_submobjects (line 2910) | def sort_submobjects(self, *args: Any, **kwargs: Any) -> Self:
method shuffle_submobjects (line 2914) | def shuffle_submobjects(self, *args: Any, **kwargs: Any) -> None:
method align_data (line 2933) | def align_data(self, mobject: Mobject, skip_point_alignment: bool = Fa...
method get_point_mobject (line 2982) | def get_point_mobject(self, center: Point3DLike | None = None) -> Point:
method align_points (line 2989) | def align_points(self, mobject: Mobject) -> Self:
method align_points_with_larger (line 2998) | def align_points_with_larger(self, larger_mobject: Mobject) -> None:
method align_submobjects (line 3001) | def align_submobjects(self, mobject: Mobject) -> Self:
method null_point_align (line 3010) | def null_point_align(self, mobject: Mobject) -> Self:
method push_self_into_submobjects (line 3026) | def push_self_into_submobjects(self) -> Self:
method add_n_more_submobjects (line 3033) | def add_n_more_submobjects(self, n: int) -> Self | None:
method repeat_submobject (line 3055) | def repeat_submobject(self, submob: Mobject) -> Mobject:
method interpolate (line 3058) | def interpolate(
method interpolate_color (line 3131) | def interpolate_color(
method become (line 3136) | def become(
method match_points (line 3268) | def match_points(self, mobject: Mobject, copy_submobjects: bool = True...
method throw_error_if_no_points (line 3290) | def throw_error_if_no_points(self) -> None:
method set_z_index (line 3298) | def set_z_index(
method set_z_index_by_z_Point3D (line 3341) | def set_z_index_by_z_Point3D(self) -> Self:
class Group (line 3354) | class Group(Mobject, metaclass=ConvertToOpenGL):
method __init__ (line 3364) | def __init__(self, *mobjects: Any, **kwargs: Any) -> None:
class _AnimationBuilder (line 3369) | class _AnimationBuilder:
method __init__ (line 3370) | def __init__(self, mobject: Mobject) -> None:
method __call__ (line 3382) | def __call__(self, **kwargs: Any) -> Self:
method __getattr__ (line 3393) | def __getattr__(self, method_name: str) -> Callable[..., _AnimationBui...
method build (line 3420) | def build(self) -> Animation:
class _UpdaterBuilder (line 3431) | class _UpdaterBuilder:
method __init__ (line 3434) | def __init__(self, mobject: Mobject):
method __getattr__ (line 3437) | def __getattr__(self, name: str, /) -> Callable[..., _UpdaterBuilder]:
function override_animate (line 3449) | def override_animate(
FILE: manim/mobject/opengl/dot_cloud.py
class DotCloud (line 15) | class DotCloud(OpenGLPMobject):
method __init__ (line 16) | def __init__(
method init_points (line 30) | def init_points(self) -> None:
method make_3d (line 45) | def make_3d(self, gloss: float = 0.5, shadow: float = 0.2) -> Self:
class TrueDot (line 52) | class TrueDot(DotCloud):
method __init__ (line 53) | def __init__(
FILE: manim/mobject/opengl/opengl_compatibility.py
class ConvertToOpenGL (line 17) | class ConvertToOpenGL(ABCMeta):
method __new__ (line 25) | def __new__(
method __init__ (line 46) | def __init__(cls, name: str, bases: tuple[type, ...], namespace: dict[...
FILE: manim/mobject/opengl/opengl_geometry.py
class OpenGLTipableVMobject (line 69) | class OpenGLTipableVMobject(OpenGLVMobject):
method __init__ (line 90) | def __init__(
method add_tip (line 102) | def add_tip(self, at_start: bool = False, **kwargs: Any) -> Self:
method create_tip (line 114) | def create_tip(self, at_start: bool = False, **kwargs: Any) -> OpenGLA...
method get_unpositioned_tip (line 123) | def get_unpositioned_tip(self, **kwargs: Any) -> OpenGLArrowTip:
method position_tip (line 133) | def position_tip(
method reset_endpoints_based_on_tip (line 148) | def reset_endpoints_based_on_tip(self, tip: OpenGLArrowTip, at_start: ...
method assign_tip_attr (line 163) | def assign_tip_attr(self, tip: OpenGLArrowTip, at_start: bool) -> Self:
method has_tip (line 171) | def has_tip(self) -> bool:
method has_start_tip (line 174) | def has_start_tip(self) -> bool:
method pop_tips (line 178) | def pop_tips(self) -> OpenGLVGroup:
method get_tips (line 190) | def get_tips(self) -> OpenGLVGroup:
method get_tip (line 202) | def get_tip(self) -> OpenGLArrowTip:
method get_default_tip_length (line 213) | def get_default_tip_length(self) -> float:
method get_first_handle (line 216) | def get_first_handle(self) -> Point3D:
method get_last_handle (line 219) | def get_last_handle(self) -> Point3D:
method get_end (line 222) | def get_end(self) -> Point3D:
method get_start (line 228) | def get_start(self) -> Point3D:
method get_length (line 234) | def get_length(self) -> float:
class OpenGLArc (line 240) | class OpenGLArc(OpenGLTipableVMobject):
method __init__ (line 241) | def __init__(
method init_points (line 258) | def init_points(self) -> None:
method create_quadratic_bezier_points (line 271) | def create_quadratic_bezier_points(
method get_arc_center (line 293) | def get_arc_center(self) -> Point3D:
method get_start_angle (line 308) | def get_start_angle(self) -> float:
method get_stop_angle (line 313) | def get_stop_angle(self) -> float:
method move_arc_center_to (line 318) | def move_arc_center_to(self, point: Point3DLike) -> Self:
class OpenGLArcBetweenPoints (line 323) | class OpenGLArcBetweenPoints(OpenGLArc):
method __init__ (line 324) | def __init__(
class OpenGLCurvedArrow (line 337) | class OpenGLCurvedArrow(OpenGLArcBetweenPoints):
method __init__ (line 338) | def __init__(self, start_point: Point3DLike, end_point: Point3DLike, *...
class OpenGLCurvedDoubleArrow (line 343) | class OpenGLCurvedDoubleArrow(OpenGLCurvedArrow):
method __init__ (line 344) | def __init__(self, start_point: Point3DLike, end_point: Point3DLike, *...
class OpenGLCircle (line 349) | class OpenGLCircle(OpenGLArc):
method __init__ (line 350) | def __init__(self, color: ParsableManimColor = RED, **kwargs: Any):
method surround (line 353) | def surround(
method point_at_angle (line 368) | def point_at_angle(self, angle: float) -> Point3D:
class OpenGLDot (line 373) | class OpenGLDot(OpenGLCircle):
method __init__ (line 374) | def __init__(
class OpenGLEllipse (line 393) | class OpenGLEllipse(OpenGLCircle):
method __init__ (line 394) | def __init__(self, width: float = 2, height: float = 1, **kwargs: Any):
class OpenGLAnnularSector (line 400) | class OpenGLAnnularSector(OpenGLArc):
method __init__ (line 401) | def __init__(
method init_points (line 423) | def init_points(self) -> None:
class OpenGLSector (line 440) | class OpenGLSector(OpenGLAnnularSector):
method __init__ (line 441) | def __init__(self, outer_radius: float = 1, inner_radius: float = 0, *...
class OpenGLAnnulus (line 445) | class OpenGLAnnulus(OpenGLCircle):
method __init__ (line 446) | def __init__(
method init_points (line 463) | def init_points(self) -> None:
class OpenGLLine (line 473) | class OpenGLLine(OpenGLTipableVMobject):
method __init__ (line 474) | def __init__(
method init_points (line 488) | def init_points(self) -> None:
method set_points_by_ends (line 491) | def set_points_by_ends(
method set_path_arc (line 501) | def set_path_arc(self, new_value: float) -> None:
method account_for_buff (line 505) | def account_for_buff(self, buff: float) -> Self:
method set_start_and_end_attrs (line 517) | def set_start_and_end_attrs(
method pointify (line 531) | def pointify(
method put_start_and_end_on (line 550) | def put_start_and_end_on(self, start: Point3DLike, end: Point3DLike) -...
method get_vector (line 556) | def get_vector(self) -> Vector3D:
method get_unit_vector (line 559) | def get_unit_vector(self) -> Vector3D:
method get_angle (line 562) | def get_angle(self) -> float:
method get_projection (line 565) | def get_projection(self, point: Point3DLike) -> Point3D:
method get_slope (line 571) | def get_slope(self) -> float:
method set_angle (line 575) | def set_angle(self, angle: float, about_point: Point3DLike | None = No...
method set_length (line 584) | def set_length(self, length: float) -> None:
class OpenGLDashedLine (line 588) | class OpenGLDashedLine(OpenGLLine):
method __init__ (line 589) | def __init__(
method calculate_num_dashes (line 609) | def calculate_num_dashes(self, dashed_ratio: float) -> int:
method get_start (line 615) | def get_start(self) -> Point3D:
method get_end (line 621) | def get_end(self) -> Point3D:
method get_first_handle (line 627) | def get_first_handle(self) -> Point3D:
method get_last_handle (line 630) | def get_last_handle(self) -> Point3D:
class OpenGLTangentLine (line 634) | class OpenGLTangentLine(OpenGLLine):
method __init__ (line 635) | def __init__(
class OpenGLElbow (line 652) | class OpenGLElbow(OpenGLVMobject):
method __init__ (line 653) | def __init__(self, width: float = 0.2, angle: float = 0, **kwargs: Any):
class OpenGLArrow (line 661) | class OpenGLArrow(OpenGLLine):
method __init__ (line 662) | def __init__(
method set_points_by_ends (line 694) | def set_points_by_ends(
method reset_points_around_ends (line 759) | def reset_points_around_ends(self) -> Self:
method get_start (line 767) | def get_start(self) -> Point3D:
method get_end (line 772) | def get_end(self) -> Point3D:
method put_start_and_end_on (line 775) | def put_start_and_end_on(self, start: Point3DLike, end: Point3DLike) -...
method scale (line 779) | def scale(self, *args: Any, **kwargs: Any) -> Self:
method set_thickness (line 784) | def set_thickness(self, thickness: float) -> Self:
method set_path_arc (line 789) | def set_path_arc(self, path_arc: float) -> None:
class OpenGLVector (line 795) | class OpenGLVector(OpenGLArrow):
method __init__ (line 796) | def __init__(
class OpenGLDoubleArrow (line 808) | class OpenGLDoubleArrow(OpenGLArrow):
method __init__ (line 809) | def __init__(self, *args: Any, **kwargs: Any):
class OpenGLCubicBezier (line 814) | class OpenGLCubicBezier(OpenGLVMobject):
method __init__ (line 815) | def __init__(
class OpenGLPolygon (line 827) | class OpenGLPolygon(OpenGLVMobject):
method __init__ (line 828) | def __init__(self, *vertices: Point3DLike, **kwargs: Any):
method init_points (line 832) | def init_points(self) -> None:
method get_vertices (line 836) | def get_vertices(self) -> Point3D_Array:
method round_corners (line 839) | def round_corners(self, radius: float = 0.5) -> Self:
class OpenGLRegularPolygon (line 875) | class OpenGLRegularPolygon(OpenGLPolygon):
method __init__ (line 876) | def __init__(self, n: int = 6, start_angle: float | None = None, **kwa...
class OpenGLTriangle (line 888) | class OpenGLTriangle(OpenGLRegularPolygon):
method __init__ (line 889) | def __init__(self, **kwargs: Any):
class OpenGLArrowTip (line 893) | class OpenGLArrowTip(OpenGLTriangle):
method __init__ (line 894) | def __init__(
method get_base (line 914) | def get_base(self) -> Point3D:
method get_tip_point (line 917) | def get_tip_point(self) -> Point3D:
method get_vector (line 920) | def get_vector(self) -> Vector3D:
method get_angle (line 923) | def get_angle(self) -> float:
method get_length (line 926) | def get_length(self) -> float:
class OpenGLRectangle (line 931) | class OpenGLRectangle(OpenGLPolygon):
method __init__ (line 932) | def __init__(
class OpenGLSquare (line 945) | class OpenGLSquare(OpenGLRectangle):
method __init__ (line 946) | def __init__(self, side_length: float = 2.0, **kwargs: Any):
class OpenGLRoundedRectangle (line 952) | class OpenGLRoundedRectangle(OpenGLRectangle):
method __init__ (line 953) | def __init__(self, corner_radius: float = 0.5, **kwargs: Any):
FILE: manim/mobject/opengl/opengl_image_mobject.py
class OpenGLImageMobject (line 23) | class OpenGLImageMobject(OpenGLTexturedSurface):
method __init__ (line 24) | def __init__(
method get_image_from_file (line 71) | def get_image_from_file(
FILE: manim/mobject/opengl/opengl_mobject.py
function affects_shader_info_id (line 94) | def affects_shader_info_id(
class OpenGLMobject (line 115) | class OpenGLMobject:
method __init__ (line 151) | def __init__(
method _assert_valid_submobjects (line 227) | def _assert_valid_submobjects(self, submobjects: Iterable[OpenGLMobjec...
method _assert_valid_submobjects_internal (line 260) | def _assert_valid_submobjects_internal(
method __init_subclass__ (line 286) | def __init_subclass__(cls, **kwargs: Any) -> None:
method __str__ (line 291) | def __str__(self) -> str:
method __repr__ (line 295) | def __repr__(self) -> str:
method __sub__ (line 298) | def __sub__(self, other: Never) -> object:
method __isub__ (line 301) | def __isub__(self, other: Never) -> object:
method __add__ (line 304) | def __add__(self, mobject: Never) -> object:
method __iadd__ (line 307) | def __iadd__(self, mobject: Never) -> object:
method set_default (line 311) | def set_default(cls, **kwargs: Any) -> None:
method init_data (line 360) | def init_data(self) -> None:
method init_colors (line 368) | def init_colors(self) -> None:
method init_points (line 375) | def init_points(self) -> None:
method set (line 384) | def set(self, **kwargs: object) -> Self:
method set_data (line 417) | def set_data(self, data: dict[str, Any]) -> Self:
method set_uniforms (line 422) | def set_uniforms(self, uniforms: dict[str, Any]) -> Self:
method animate (line 428) | def animate(self) -> _AnimationBuilder | Self:
method width (line 518) | def width(self) -> float:
method width (line 551) | def width(self, value: float) -> None:
method height (line 555) | def height(self) -> float:
method height (line 587) | def height(self, value: float) -> None:
method depth (line 591) | def depth(self) -> float:
method depth (line 607) | def depth(self, value: float) -> None:
method resize_points (line 610) | def resize_points(
method set_points (line 620) | def set_points(self, points: Point3DLike_Array) -> Self:
method apply_over_attr_arrays (line 630) | def apply_over_attr_arrays(
method get_array_attrs (line 637) | def get_array_attrs(self) -> Iterable[str]:
method append_points (line 640) | def append_points(self, new_points: Point3DLike_Array) -> Self:
method reverse_points (line 645) | def reverse_points(self) -> Self:
method get_midpoint (line 651) | def get_midpoint(self) -> Point3D:
method apply_points_function (line 675) | def apply_points_function(
method match_points (line 707) | def match_points(self, mobject: OpenGLMobject) -> Self:
method clear_points (line 727) | def clear_points(self) -> Self:
method get_num_points (line 731) | def get_num_points(self) -> int:
method get_all_points (line 734) | def get_all_points(self) -> Point3D_Array:
method has_points (line 740) | def has_points(self) -> bool:
method get_bounding_box (line 743) | def get_bounding_box(self) -> Point3D_Array:
method compute_bounding_box (line 749) | def compute_bounding_box(self) -> Point3D_Array:
method refresh_bounding_box (line 769) | def refresh_bounding_box(
method is_point_touching (line 779) | def is_point_touching(
method __getitem__ (line 790) | def __getitem__(self, value: int | slice) -> OpenGLMobject:
method __iter__ (line 796) | def __iter__(self) -> Iterator[OpenGLMobject]:
method __len__ (line 799) | def __len__(self) -> int:
method split (line 802) | def split(self) -> Sequence[OpenGLMobject]:
method assemble_family (line 805) | def assemble_family(self) -> Self:
method get_family (line 814) | def get_family(self, recurse: bool = True) -> Sequence[OpenGLMobject]:
method family_members_with_points (line 820) | def family_members_with_points(self) -> Sequence[OpenGLMobject]:
method add (line 823) | def add(self, *mobjects: OpenGLMobject, update_parent: bool = False) -...
method insert (line 908) | def insert(
method remove (line 941) | def remove(self, *mobjects: OpenGLMobject, update_parent: bool = False...
method add_to_back (line 975) | def add_to_back(self, *mobjects: OpenGLMobject) -> Self:
method replace_submobject (line 1024) | def replace_submobject(self, index: int, new_submob: OpenGLMobject) ->...
method arrange (line 1035) | def arrange(
method arrange_in_grid (line 1064) | def arrange_in_grid(
method get_grid (line 1339) | def get_grid(
method duplicate (line 1356) | def duplicate(self, n: int) -> OpenGLGroup:
method sort (line 1360) | def sort(
method shuffle (line 1372) | def shuffle(self, recurse: bool = False) -> Self:
method invert (line 1395) | def invert(self, recursive: bool = False) -> Self:
method copy (line 1425) | def copy(self, shallow: bool = False) -> OpenGLMobject:
method deepcopy (line 1483) | def deepcopy(self) -> OpenGLMobject:
method generate_target (line 1490) | def generate_target(self, use_deepcopy: bool = False) -> OpenGLMobject:
method save_state (line 1498) | def save_state(self, use_deepcopy: bool = False) -> Self:
method restore (line 1509) | def restore(self) -> Self:
method init_updaters (line 1518) | def init_updaters(self) -> None:
method update (line 1524) | def update(self, dt: float = 0, recurse: bool = True) -> Self:
method get_time_based_updaters (line 1535) | def get_time_based_updaters(self) -> Sequence[_TimeBasedUpdater]:
method has_time_based_updater (line 1538) | def has_time_based_updater(self) -> bool:
method get_updaters (line 1541) | def get_updaters(self) -> Sequence[_Updater]:
method get_family_updaters (line 1546) | def get_family_updaters(self) -> Sequence[_Updater]:
method add_updater (line 1549) | def add_updater(
method remove_updater (line 1571) | def remove_updater(self, update_function: _Updater) -> Self:
method clear_updaters (line 1579) | def clear_updaters(self, recurse: bool = True) -> Self:
method match_updaters (line 1588) | def match_updaters(self, mobject: OpenGLMobject) -> Self:
method suspend_updating (line 1594) | def suspend_updating(self, recurse: bool = True) -> Self:
method resume_updating (line 1601) | def resume_updating(self, recurse: bool = True, call_updater: bool = T...
method refresh_has_updater_status (line 1612) | def refresh_has_updater_status(self) -> Self:
method shift (line 1618) | def shift(self, vector: Vector3DLike) -> Self:
method scale (line 1626) | def scale(
method stretch (line 1687) | def stretch(self, factor: float, dim: int, **kwargs: Any) -> Self:
method rotate_about_origin (line 1695) | def rotate_about_origin(self, angle: float, axis: Vector3DLike = OUT) ...
method rotate (line 1698) | def rotate(
method flip (line 1714) | def flip(self, axis: Vector3DLike = UP, **kwargs: Any) -> Self:
method apply_function (line 1733) | def apply_function(self, function: MappingFunction, **kwargs: Any) -> ...
method apply_function_to_position (line 1745) | def apply_function_to_position(self, function: MappingFunction) -> Self:
method apply_function_to_submobject_positions (line 1749) | def apply_function_to_submobject_positions(self, function: MappingFunc...
method apply_matrix (line 1754) | def apply_matrix(self, matrix: MatrixMN, **kwargs: Any) -> Self:
method apply_complex_function (line 1766) | def apply_complex_function(
method hierarchical_model_matrix (line 1802) | def hierarchical_model_matrix(self) -> MatrixMN:
method wag (line 1813) | def wag(
method center (line 1835) | def center(self) -> Self:
method align_on_border (line 1840) | def align_on_border(
method to_corner (line 1860) | def to_corner(
method to_edge (line 1867) | def to_edge(
method next_to (line 1874) | def next_to(
method shift_onto_screen (line 1929) | def shift_onto_screen(self, **kwargs: Any) -> Self:
method is_off_screen (line 1943) | def is_off_screen(self) -> bool:
method stretch_about_point (line 1952) | def stretch_about_point(self, factor: float, dim: int, point: Point3DL...
method rescale_to_fit (line 1955) | def rescale_to_fit(
method stretch_to_fit_width (line 1971) | def stretch_to_fit_width(self, width: float, **kwargs: Any) -> Self:
method stretch_to_fit_height (line 1997) | def stretch_to_fit_height(self, height: float, **kwargs: Any) -> Self:
method stretch_to_fit_depth (line 2001) | def stretch_to_fit_depth(self, depth: float, **kwargs: Any) -> Self:
method set_width (line 2005) | def set_width(
method set_height (line 2038) | def set_height(
method set_depth (line 2049) | def set_depth(
method set_coord (line 2060) | def set_coord(
method set_x (line 2069) | def set_x(self, x: float, direction: Vector3DLike = ORIGIN) -> Self:
method set_y (line 2073) | def set_y(self, y: float, direction: Vector3DLike = ORIGIN) -> Self:
method set_z (line 2077) | def set_z(self, z: float, direction: Vector3DLike = ORIGIN) -> Self:
method space_out_submobjects (line 2081) | def space_out_submobjects(self, factor: float = 1.5, **kwargs: Any) ->...
method move_to (line 2087) | def move_to(
method replace (line 2103) | def replace(
method surround (line 2124) | def surround(
method put_start_and_end_on (line 2136) | def put_start_and_end_on(self, start: Point3DLike, end: Point3DLike) -...
method set_rgba_array (line 2161) | def set_rgba_array(
method set_rgba_array_direct (line 2199) | def set_rgba_array_direct(
method set_color (line 2222) | def set_color(
method set_opacity (line 2240) | def set_opacity(
method get_color (line 2249) | def get_color(self) -> str:
method get_opacity (line 2252) | def get_opacity(self) -> float:
method set_color_by_gradient (line 2256) | def set_color_by_gradient(self, *colors: ParsableManimColor) -> Self:
method set_submobject_colors_by_gradient (line 2259) | def set_submobject_colors_by_gradient(self, *colors: ParsableManimColo...
method fade (line 2273) | def fade(self, darkness: float = 0.5, recurse: bool = True) -> Self:
method get_gloss (line 2276) | def get_gloss(self) -> float:
method set_gloss (line 2279) | def set_gloss(self, gloss: float, recurse: bool = True) -> Self:
method get_shadow (line 2284) | def get_shadow(self) -> float:
method set_shadow (line 2287) | def set_shadow(self, shadow: float, recurse: bool = True) -> Self:
method add_background_rectangle (line 2294) | def add_background_rectangle(
method add_background_rectangle_to_submobjects (line 2340) | def add_background_rectangle_to_submobjects(self, **kwargs: Any) -> Self:
method add_background_rectangle_to_family_members_with_points (line 2345) | def add_background_rectangle_to_family_members_with_points(
method get_bounding_box_point (line 2354) | def get_bounding_box_point(self, direction: Vector3DLike) -> Point3D:
method get_edge_center (line 2359) | def get_edge_center(self, direction: Vector3DLike) -> Point3D:
method get_corner (line 2363) | def get_corner(self, direction: Vector3DLike) -> Point3D:
method get_center (line 2367) | def get_center(self) -> Point3D:
method get_center_of_mass (line 2371) | def get_center_of_mass(self) -> Point3D:
method get_boundary_point (line 2374) | def get_boundary_point(self, direction: Vector3DLike) -> Point3D:
method get_continuous_bounding_box_point (line 2382) | def get_continuous_bounding_box_point(self, direction: Vector3DLike) -...
method get_top (line 2397) | def get_top(self) -> Point3D:
method get_bottom (line 2401) | def get_bottom(self) -> Point3D:
method get_right (line 2405) | def get_right(self) -> Point3D:
method get_left (line 2409) | def get_left(self) -> Point3D:
method get_zenith (line 2413) | def get_zenith(self) -> Point3D:
method get_nadir (line 2417) | def get_nadir(self) -> Point3D:
method length_over_dim (line 2421) | def length_over_dim(self, dim: int) -> float:
method get_width (line 2426) | def get_width(self) -> float:
method get_height (line 2430) | def get_height(self) -> float:
method get_depth (line 2434) | def get_depth(self) -> float:
method get_coord (line 2438) | def get_coord(self, dim: int, direction: Vector3DLike = ORIGIN) -> Man...
method get_x (line 2442) | def get_x(self, direction: Vector3DLike = ORIGIN) -> ManimFloat:
method get_y (line 2446) | def get_y(self, direction: Vector3DLike = ORIGIN) -> ManimFloat:
method get_z (line 2450) | def get_z(self, direction: Vector3DLike = ORIGIN) -> ManimFloat:
method get_start (line 2454) | def get_start(self) -> Point3D:
method get_end (line 2459) | def get_end(self) -> Point3D:
method get_start_and_end (line 2464) | def get_start_and_end(self) -> tuple[Point3D, Point3D]:
method point_from_proportion (line 2468) | def point_from_proportion(self, alpha: float) -> Point3D:
method pfp (line 2473) | def pfp(self, alpha: float) -> Point3D:
method get_pieces (line 2477) | def get_pieces(self, n_pieces: int) -> OpenGLMobject:
method get_z_index_reference_point (line 2488) | def get_z_index_reference_point(self) -> Point3D:
method match_color (line 2495) | def match_color(self, mobject: OpenGLMobject) -> Self:
method match_dim_size (line 2499) | def match_dim_size(
method match_width (line 2508) | def match_width(self, mobject: OpenGLMobject, **kwargs: Any) -> Self:
method match_height (line 2512) | def match_height(self, mobject: OpenGLMobject, **kwargs: Any) -> Self:
method match_depth (line 2516) | def match_depth(self, mobject: OpenGLMobject, **kwargs: Any) -> Self:
method match_coord (line 2520) | def match_coord(
method match_x (line 2530) | def match_x(self, mobject: OpenGLMobject, direction: Vector3DLike = OR...
method match_y (line 2534) | def match_y(self, mobject: OpenGLMobject, direction: Vector3DLike = OR...
method match_z (line 2538) | def match_z(self, mobject: OpenGLMobject, direction: Vector3DLike = OR...
method align_to (line 2542) | def align_to(
method get_group_class (line 2567) | def get_group_class(self) -> type[OpenGLGroup]:
method get_mobject_type_class (line 2571) | def get_mobject_type_class() -> type[OpenGLMobject]:
method align_data_and_family (line 2577) | def align_data_and_family(self, mobject: OpenGLMobject) -> Self:
method align_data (line 2582) | def align_data(self, mobject: OpenGLMobject) -> Self:
method align_points (line 2600) | def align_points(self, mobject: OpenGLMobject) -> Self:
method align_family (line 2606) | def align_family(self, mobject: OpenGLMobject) -> Self:
method push_self_into_submobjects (line 2619) | def push_self_into_submobjects(self) -> Self:
method add_n_more_submobjects (line 2626) | def add_n_more_submobjects(self, n: int) -> Self:
method interpolate (line 2655) | def interpolate(
method pointwise_become_partial (line 2711) | def pointwise_become_partial(
method become (line 2724) | def become(
method lock_data (line 2791) | def lock_data(self, keys: Iterable[str]) -> None:
method lock_matching_data (line 2805) | def lock_matching_data(
method unlock_data (line 2825) | def unlock_data(self) -> None:
method fix_in_frame (line 2832) | def fix_in_frame(self) -> Self:
method fix_orientation (line 2837) | def fix_orientation(self) -> Self:
method unfix_from_frame (line 2844) | def unfix_from_frame(self) -> Self:
method unfix_orientation (line 2849) | def unfix_orientation(self) -> Self:
method apply_depth_test (line 2856) | def apply_depth_test(self) -> Self:
method deactivate_depth_test (line 2861) | def deactivate_depth_test(self) -> Self:
method replace_shader_code (line 2867) | def replace_shader_code(self, old_code: str, new_code: str) -> Self:
method set_color_by_code (line 2875) | def set_color_by_code(self, glsl_code: str) -> Self:
method set_color_by_xyz_func (line 2885) | def set_color_by_xyz_func(
method refresh_shader_wrapper_id (line 2910) | def refresh_shader_wrapper_id(self) -> Self:
method get_shader_wrapper (line 2914) | def get_shader_wrapper(self) -> "ShaderWrapper": # noqa: UP037
method get_shader_wrapper_list (line 2931) | def get_shader_wrapper_list(self) -> Sequence["ShaderWrapper"]: # noq...
method check_data_alignment (line 2948) | def check_data_alignment(self, array: _ShaderData, data_key: str) -> S...
method get_resized_shader_data_array (line 2960) | def get_resized_shader_data_array(self, length: float) -> _ShaderData:
method read_data_to_shader (line 2967) | def read_data_to_shader(
method get_shader_data (line 2978) | def get_shader_data(self) -> _ShaderData:
method refresh_shader_data (line 2983) | def refresh_shader_data(self) -> None:
method get_shader_uniforms (line 2986) | def get_shader_uniforms(self) -> dict[str, Any]:
method get_shader_vert_indices (line 2989) | def get_shader_vert_indices(self) -> Sequence[int] | None:
method submobjects (line 2993) | def submobjects(self) -> list[OpenGLMobject]:
method submobjects (line 2997) | def submobjects(self, submobject_list: Iterable[OpenGLMobject]) -> None:
method throw_error_if_no_points (line 3003) | def throw_error_if_no_points(self) -> None:
class OpenGLGroup (line 3012) | class OpenGLGroup(OpenGLMobject):
method __init__ (line 3013) | def __init__(self, *mobjects: OpenGLMobject, **kwargs: Any) -> None:
class OpenGLPoint (line 3018) | class OpenGLPoint(OpenGLMobject):
method __init__ (line 3019) | def __init__(
method get_width (line 3032) | def get_width(self) -> float:
method get_height (line 3036) | def get_height(self) -> float:
method get_location (line 3039) | def get_location(self) -> Point3D:
method get_bounding_box_point (line 3043) | def get_bounding_box_point(self, *args: object, **kwargs: Any) -> Poin...
method set_location (line 3046) | def set_location(self, new_loc: Point3DLike) -> None:
class _AnimationBuilder (line 3050) | class _AnimationBuilder:
method __init__ (line 3051) | def __init__(self, mobject: OpenGLMobject) -> None:
method __call__ (line 3063) | def __call__(self, **kwargs: Any) -> Self:
method __getattr__ (line 3074) | def __getattr__(self, method_name: str) -> Callable[..., Self]:
method build (line 3106) | def build(self) -> "Animation": # noqa: UP037
class _OverrideAnimateDecorator (line 3122) | class _OverrideAnimateDecorator(Protocol):
method __call__ (line 3124) | def __call__(self, decorated: _Decorated, /) -> _Decorated: ...
function override_animate (line 3127) | def override_animate(method: types.FunctionType) -> _OverrideAnimateDeco...
FILE: manim/mobject/opengl/opengl_point_cloud_mobject.py
class OpenGLPMobject (line 37) | class OpenGLPMobject(OpenGLMobject):
method __init__ (line 48) | def __init__(
method reset_points (line 61) | def reset_points(self) -> Self:
method get_array_attrs (line 66) | def get_array_attrs(self):
method add_points (line 69) | def add_points(
method thin_out (line 96) | def thin_out(self, factor=5):
method set_color_by_gradient (line 110) | def set_color_by_gradient(self, *colors):
method set_colors_by_radial_gradient (line 116) | def set_colors_by_radial_gradient(
method match_colors (line 137) | def match_colors(self, pmobject):
method fade_to (line 141) | def fade_to(self, color, alpha, family=True):
method filter_out (line 148) | def filter_out(self, condition):
method sort_points (line 155) | def sort_points(self, function=lambda p: p[0]):
method ingest_submobjects (line 163) | def ingest_submobjects(self):
method point_from_proportion (line 168) | def point_from_proportion(self, alpha):
method pointwise_become_partial (line 172) | def pointwise_become_partial(self, pmobject, a, b):
method get_shader_data (line 179) | def get_shader_data(self):
method get_mobject_type_class (line 186) | def get_mobject_type_class():
class OpenGLPGroup (line 190) | class OpenGLPGroup(OpenGLPMobject):
method __init__ (line 191) | def __init__(self, *pmobs, **kwargs):
method fade_to (line 197) | def fade_to(self, color, alpha, family=True):
class OpenGLPMPoint (line 203) | class OpenGLPMPoint(OpenGLPMobject):
method __init__ (line 204) | def __init__(self, location=ORIGIN, stroke_width=4.0, **kwargs):
method init_points (line 208) | def init_points(self):
FILE: manim/mobject/opengl/opengl_surface.py
class OpenGLSurface (line 28) | class OpenGLSurface(OpenGLMobject):
method __init__ (line 68) | def __init__(
method uv_func (line 121) | def uv_func(self, u, v):
method init_points (line 127) | def init_points(self):
method compute_triangle_indices (line 148) | def compute_triangle_indices(self):
method get_triangle_indices (line 166) | def get_triangle_indices(self):
method get_surface_points_and_nudged_points (line 169) | def get_surface_points_and_nudged_points(
method get_unit_normals (line 176) | def get_unit_normals(self) -> Vector3D_Array:
method pointwise_become_partial (line 184) | def pointwise_become_partial(self, smobject, a, b, axis=None):
method get_partial_points_array (line 209) | def get_partial_points_array(self, points, a, b, resolution, axis):
method sort_faces_back_to_front (line 242) | def sort_faces_back_to_front(self, vect=OUT):
method get_shader_data (line 256) | def get_shader_data(self):
method fill_in_shader_color_info (line 280) | def fill_in_shader_color_info(self, shader_data):
method _get_color_by_value (line 298) | def _get_color_by_value(self, s_points):
method get_shader_vert_indices (line 352) | def get_shader_vert_indices(self):
class OpenGLSurfaceGroup (line 356) | class OpenGLSurfaceGroup(OpenGLSurface):
method __init__ (line 357) | def __init__(self, *parametric_surfaces, resolution=None, **kwargs):
method init_points (line 362) | def init_points(self):
class OpenGLTexturedSurface (line 366) | class OpenGLTexturedSurface(OpenGLSurface):
method __init__ (line 379) | def __init__(
method get_image_from_file (line 420) | def get_image_from_file(
method init_data (line 428) | def init_data(self):
method init_points (line 433) | def init_points(self):
method init_colors (line 444) | def init_colors(self):
method set_opacity (line 447) | def set_opacity(self, opacity, recurse=True):
method pointwise_become_partial (line 452) | def pointwise_become_partial(self, tsmobject, a, b, axis=1):
method fill_in_shader_color_info (line 462) | def fill_in_shader_color_info(self, shader_data):
FILE: manim/mobject/opengl/opengl_three_dimensions.py
class OpenGLSurfaceMesh (line 13) | class OpenGLSurfaceMesh(OpenGLVGroup):
method __init__ (line 14) | def __init__(
method init_points (line 36) | def init_points(self) -> None:
FILE: manim/mobject/opengl/opengl_vectorized_mobject.py
function triggers_refreshed_triangulation (line 49) | def triggers_refreshed_triangulation(func):
class OpenGLVMobject (line 67) | class OpenGLVMobject(OpenGLMobject):
method __init__ (line 95) | def __init__(
method _assert_valid_submobjects (line 168) | def _assert_valid_submobjects(self, submobjects: Iterable[OpenGLVMobje...
method get_group_class (line 171) | def get_group_class(self):
method get_mobject_type_class (line 175) | def get_mobject_type_class():
method submobjects (line 179) | def submobjects(self) -> Sequence[OpenGLVMobject]:
method submobjects (line 183) | def submobjects(self, submobject_list: Iterable[OpenGLVMobject]) -> None:
method init_data (line 187) | def init_data(self):
method init_colors (line 196) | def init_colors(self):
method set_fill (line 211) | def set_fill(
method set_stroke (line 261) | def set_stroke(
method set_style (line 295) | def set_style(
method get_style (line 330) | def get_style(self):
method match_style (line 339) | def match_style(self, vmobject, recurse=True):
method set_color (line 357) | def set_color(self, color, opacity=None, recurse=True):
method set_opacity (line 365) | def set_opacity(self, opacity, recurse=True):
method fade (line 370) | def fade(self, darkness=0.5, recurse=True):
method get_fill_colors (line 384) | def get_fill_colors(self):
method get_fill_opacities (line 387) | def get_fill_opacities(self):
method get_stroke_colors (line 390) | def get_stroke_colors(self):
method get_stroke_opacities (line 393) | def get_stroke_opacities(self):
method get_stroke_widths (line 396) | def get_stroke_widths(self):
method get_fill_color (line 401) | def get_fill_color(self):
method get_fill_opacity (line 408) | def get_fill_opacity(self):
method get_stroke_color (line 415) | def get_stroke_color(self):
method get_stroke_width (line 418) | def get_stroke_width(self):
method get_stroke_opacity (line 421) | def get_stroke_opacity(self):
method get_color (line 424) | def get_color(self):
method get_colors (line 429) | def get_colors(self):
method has_stroke (line 438) | def has_stroke(self):
method has_fill (line 448) | def has_fill(self):
method get_opacity (line 452) | def get_opacity(self):
method set_flat_stroke (line 457) | def set_flat_stroke(self, flat_stroke=True, recurse=True):
method get_flat_stroke (line 462) | def get_flat_stroke(self):
method set_anchors_and_handles (line 466) | def set_anchors_and_handles(self, anchors1, handles, anchors2):
method start_new_path (line 476) | def start_new_path(self, point):
method add_cubic_bezier_curve (line 481) | def add_cubic_bezier_curve(
method add_cubic_bezier_curve_to (line 496) | def add_cubic_bezier_curve_to(self, handle1, handle2, anchor):
method add_quadratic_bezier_curve_to (line 510) | def add_quadratic_bezier_curve_to(self, handle, anchor):
method add_line_to (line 517) | def add_line_to(self, point: Sequence[float]) -> OpenGLVMobject:
method add_smooth_curve_to (line 540) | def add_smooth_curve_to(self, point):
method add_smooth_cubic_curve_to (line 549) | def add_smooth_cubic_curve_to(self, handle, point):
method has_new_path_started (line 554) | def has_new_path_started(self):
method get_last_point (line 557) | def get_last_point(self):
method get_reflection_of_last_handle (line 560) | def get_reflection_of_last_handle(self):
method close_path (line 564) | def close_path(self):
method is_closed (line 568) | def is_closed(self):
method subdivide_sharp_curves (line 571) | def subdivide_sharp_curves(self, angle_threshold=30 * DEGREES, recurse...
method add_points_as_corners (line 591) | def add_points_as_corners(self, points):
method set_points_as_corners (line 596) | def set_points_as_corners(self, points: Point3DLike_Array) -> OpenGLVM...
method set_points_smoothly (line 619) | def set_points_smoothly(
method change_anchor_mode (line 626) | def change_anchor_mode(self, mode):
method make_smooth (line 663) | def make_smooth(self):
method make_approximately_smooth (line 673) | def make_approximately_smooth(self):
method make_jagged (line 684) | def make_jagged(self):
method add_subpath (line 688) | def add_subpath(self, points):
method append_vectorized_mobject (line 693) | def append_vectorized_mobject(self, vectorized_mobject):
method consider_points_equals (line 704) | def consider_points_equals(self, p0, p1):
method force_direction (line 708) | def force_direction(self, target_direction: str):
method reverse_direction (line 725) | def reverse_direction(self):
method get_bezier_tuples_from_points (line 750) | def get_bezier_tuples_from_points(self, points):
method get_bezier_tuples (line 756) | def get_bezier_tuples(self):
method get_subpaths_from_points (line 759) | def get_subpaths_from_points(self, points):
method get_subpaths (line 776) | def get_subpaths(self):
method get_nth_curve_points (line 789) | def get_nth_curve_points(self, n: int) -> np.ndarray:
method get_nth_curve_function (line 806) | def get_nth_curve_function(self, n: int) -> Callable[[float], np.ndarr...
method get_nth_curve_function_with_length (line 821) | def get_nth_curve_function_with_length(
method get_num_curves (line 852) | def get_num_curves(self) -> int:
method get_nth_curve_length (line 862) | def get_nth_curve_length(
method get_curve_functions (line 885) | def get_curve_functions(
method get_nth_curve_length_pieces (line 900) | def get_nth_curve_length_pieces(
method get_curve_functions_with_lengths (line 929) | def get_curve_functions_with_lengths(
method point_from_proportion (line 949) | def point_from_proportion(self, alpha: float) -> Point3D:
method proportion_from_point (line 994) | def proportion_from_point(
method get_anchors_and_handles (line 1050) | def get_anchors_and_handles(self) -> Iterable[np.ndarray]:
method get_start_anchors (line 1061) | def get_start_anchors(self) -> np.ndarray:
method get_end_anchors (line 1071) | def get_end_anchors(self) -> np.ndarray:
method get_anchors (line 1082) | def get_anchors(self) -> Iterable[np.ndarray]:
method get_points_without_null_curves (line 1098) | def get_points_without_null_curves(self, atol=1e-9):
method get_arc_length (line 1110) | def get_arc_length(self, sample_points_per_curve: int | None = None) -...
method get_area_vector (line 1130) | def get_area_vector(self):
method get_direction (line 1158) | def get_direction(self):
method get_unit_normal (line 1178) | def get_unit_normal(self, recompute=False):
method refresh_unit_normal (line 1196) | def refresh_unit_normal(self):
method align_points (line 1202) | def align_points(self, vmobject):
method insert_n_curves (line 1257) | def insert_n_curves(self, n: int, recurse=True) -> OpenGLVMobject:
method insert_n_curves_to_point_list (line 1279) | def insert_n_curves_to_point_list(self, n: int, points: np.ndarray) ->...
method interpolate (line 1307) | def interpolate(self, mobject1, mobject2, alpha, *args, **kwargs):
method pointwise_become_partial (line 1319) | def pointwise_become_partial(
method get_subcurve (line 1381) | def get_subcurve(self, a: float, b: float) -> OpenGLVMobject:
method refresh_triangulation (line 1404) | def refresh_triangulation(self) -> Self:
method get_triangulation (line 1409) | def get_triangulation(self, normal_vector=None):
method set_points (line 1470) | def set_points(self, points):
method set_data (line 1475) | def set_data(self, data):
method apply_function (line 1481) | def apply_function(self, function, make_smooth=False, **kwargs):
method apply_points_function (line 1488) | def apply_points_function(self, *args, **kwargs):
method flip (line 1493) | def flip(self, *args, **kwargs):
method init_shader_data (line 1498) | def init_shader_data(self):
method refresh_shader_wrapper_id (line 1513) | def refresh_shader_wrapper_id(self):
method get_fill_shader_wrapper (line 1518) | def get_fill_shader_wrapper(self):
method update_fill_shader_wrapper (line 1522) | def update_fill_shader_wrapper(self):
method get_stroke_shader_wrapper (line 1528) | def get_stroke_shader_wrapper(self):
method update_stroke_shader_wrapper (line 1532) | def update_stroke_shader_wrapper(self):
method get_shader_wrapper_list (line 1537) | def get_shader_wrapper_list(self):
method get_stroke_uniforms (line 1566) | def get_stroke_uniforms(self):
method get_fill_uniforms (line 1572) | def get_fill_uniforms(self):
method get_stroke_shader_data (line 1581) | def get_stroke_shader_data(self):
method get_fill_shader_data (line 1600) | def get_fill_shader_data(self):
method refresh_shader_data (line 1612) | def refresh_shader_data(self):
method get_fill_shader_vert_indices (line 1616) | def get_fill_shader_vert_indices(self):
class OpenGLVGroup (line 1620) | class OpenGLVGroup(OpenGLVMobject):
method __init__ (line 1683) | def __init__(self, *vmobjects: OpenGLVMobject, **kwargs: Any):
method __repr__ (line 1687) | def __repr__(self):
method __str__ (line 1695) | def __str__(self):
method add (line 1701) | def add(self, *vmobjects: OpenGLVMobject):
method __add__ (line 1751) | def __add__(self, vmobject):
method __iadd__ (line 1754) | def __iadd__(self, vmobject):
method __sub__ (line 1757) | def __sub__(self, vmobject):
method __isub__ (line 1762) | def __isub__(self, vmobject):
method __setitem__ (line 1765) | def __setitem__(self, key: int, value: OpenGLVMobject | Sequence[OpenG...
class OpenGLVectorizedPoint (line 1798) | class OpenGLVectorizedPoint(OpenGLPoint, OpenGLVMobject):
method __init__ (line 1799) | def __init__(
class OpenGLCurvesAsSubmobjects (line 1818) | class OpenGLCurvesAsSubmobjects(OpenGLVGroup):
method __init__ (line 1835) | def __init__(self, vmobject, **kwargs):
class OpenGLDashedVMobject (line 1844) | class OpenGLDashedVMobject(OpenGLVMobject):
method __init__ (line 1879) | def __init__(
FILE: manim/mobject/svg/brace.py
class Brace (line 34) | class Brace(VMobjectFromSVGPath):
method __init__ (line 69) | def __init__(
method put_at_tip (line 132) | def put_at_tip(self, mob: Mobject, use_next_to: bool = True, **kwargs:...
method get_text (line 155) | def get_text(self, *text: str, **kwargs: Any) -> Tex:
method get_tex (line 174) | def get_tex(self, *tex: str, **kwargs: Any) -> MathTex:
method get_tip (line 193) | def get_tip(self) -> Point3D:
method get_direction (line 201) | def get_direction(self) -> Vector3D:
class BraceLabel (line 207) | class BraceLabel(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 231) | def __init__(
method creation_anim (line 260) | def creation_anim(
method shift_brace (line 267) | def shift_brace(self, obj: Mobject, **kwargs: Any) -> Self:
method change_label (line 274) | def change_label(self, *text: str, **kwargs: Any) -> Self:
method change_brace_label (line 281) | def change_brace_label(self, obj: Mobject, *text: str, **kwargs: Any) ...
class BraceText (line 287) | class BraceText(BraceLabel):
method __init__ (line 332) | def __init__(
class BraceBetweenPoints (line 342) | class BraceBetweenPoints(Brace):
method __init__ (line 374) | def __init__(
class ArcBrace (line 387) | class ArcBrace(Brace):
method __init__ (line 442) | def __init__(
FILE: manim/mobject/svg/svg_mobject.py
function _convert_point_to_3d (line 32) | def _convert_point_to_3d(x: float, y: float) -> np.ndarray:
class SVGMobject (line 36) | class SVGMobject(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 97) | def __init__(
method init_svg_mobject (line 161) | def init_svg_mobject(self, use_svg_cache: bool) -> None:
method hash_seed (line 182) | def hash_seed(self) -> tuple:
method generate_mobject (line 196) | def generate_mobject(self) -> None:
method get_file_path (line 213) | def get_file_path(self) -> Path:
method modify_xml_tree (line 219) | def modify_xml_tree(self, element_tree: ET.ElementTree) -> ET.ElementT...
method generate_config_style_dict (line 246) | def generate_config_style_dict(self) -> dict[str, str]:
method get_mobjects_from (line 264) | def get_mobjects_from(
method get_mob_from_shape_element (line 322) | def get_mob_from_shape_element(self, shape: se.SVGElement) -> VMobject...
method handle_transform (line 348) | def handle_transform(mob: VMobject, matrix: se.Matrix) -> VMobject:
method apply_style_to_mobject (line 366) | def apply_style_to_mobject(mob: VMobject, shape: se.GraphicObject) -> ...
method path_to_mobject (line 385) | def path_to_mobject(self, path: se.Path) -> VMobjectFromSVGPath:
method line_to_mobject (line 396) | def line_to_mobject(line: se.Line) -> Line:
method rect_to_mobject (line 410) | def rect_to_mobject(rect: se.Rect) -> Rectangle:
method ellipse_to_mobject (line 436) | def ellipse_to_mobject(ellipse: se.Ellipse | se.Circle) -> Circle:
method polygon_to_mobject (line 451) | def polygon_to_mobject(polygon: se.Polygon) -> Polygon:
method polyline_to_mobject (line 462) | def polyline_to_mobject(self, polyline: se.Polyline) -> VMobject:
method text_to_mobject (line 475) | def text_to_mobject(text: se.Text) -> VMobject:
method move_into_position (line 490) | def move_into_position(self) -> None:
class VMobjectFromSVGPath (line 500) | class VMobjectFromSVGPath(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 527) | def __init__(
method generate_points (line 545) | def generate_points(self) -> None:
method init_points (line 558) | def init_points(self) -> None:
method handle_commands (line 561) | def handle_commands(self) -> None:
FILE: manim/mobject/table.py
class Table (line 86) | class Table(VGroup):
method __init__ (line 187) | def __init__(
method _table_to_mob_table (line 252) | def _table_to_mob_table(
method _organize_mob_table (line 277) | def _organize_mob_table(self, table: Iterable[Iterable[VMobject]]) -> ...
method _add_labels (line 303) | def _add_labels(self, mob_table: VGroup) -> VGroup:
method _add_horizontal_lines (line 334) | def _add_horizontal_lines(self) -> Table:
method _add_vertical_lines (line 364) | def _add_vertical_lines(self) -> Table:
method get_horizontal_lines (line 395) | def get_horizontal_lines(self) -> VGroup:
method get_vertical_lines (line 421) | def get_vertical_lines(self) -> VGroup:
method get_columns (line 447) | def get_columns(self) -> VGroup:
method get_rows (line 478) | def get_rows(self) -> VGroup:
method set_column_colors (line 504) | def set_column_colors(self, *colors: Iterable[ParsableManimColor]) -> ...
method set_row_colors (line 533) | def set_row_colors(self, *colors: Iterable[ParsableManimColor]) -> Table:
method get_entries (line 562) | def get_entries(
method get_entries_without_labels (line 614) | def get_entries_without_labels(
method get_row_labels (line 659) | def get_row_labels(self) -> VGroup:
method get_col_labels (line 687) | def get_col_labels(self) -> VGroup:
method get_labels (line 715) | def get_labels(self) -> VGroup:
method add_background_to_entries (line 750) | def add_background_to_entries(self, color: ParsableManimColor = BLACK)...
method get_cell (line 756) | def get_cell(self, pos: Sequence[int] = (1, 1), **kwargs) -> Polygon:
method get_highlighted_cell (line 813) | def get_highlighted_cell(
method add_highlighted_cell (line 852) | def add_highlighted_cell(
method create (line 892) | def create(
method scale (line 966) | def scale(self, scale_factor: float, **kwargs):
class MathTable (line 975) | class MathTable(Table):
method __init__ (line 995) | def __init__(
class MobjectTable (line 1022) | class MobjectTable(Table):
method __init__ (line 1050) | def __init__(
class IntegerTable (line 1072) | class IntegerTable(Table):
method __init__ (line 1098) | def __init__(
class DecimalTable (line 1121) | class DecimalTable(Table):
method __init__ (line 1142) | def __init__(
FILE: manim/mobject/text/code_mobject.py
class Code (line 28) | class Code(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 124) | def __init__(
method get_styles_list (line 262) | def get_styles_list(cls) -> list[str]:
FILE: manim/mobject/text/numbers.py
class DecimalNumber (line 23) | class DecimalNumber(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 83) | def __init__(
method font_size (line 138) | def font_size(self) -> float:
method font_size (line 144) | def font_size(self, font_val: float) -> None:
method _set_submobjects_from_number (line 155) | def _set_submobjects_from_number(self, number: float) -> None:
method _get_num_string (line 204) | def _get_num_string(self, number: float | complex) -> str:
method _string_to_mob (line 217) | def _string_to_mob(
method _get_formatter (line 232) | def _get_formatter(self, **kwargs: Any) -> str:
method _get_complex_formatter (line 265) | def _get_complex_formatter(self) -> str:
method set_value (line 274) | def set_value(self, number: float) -> Self:
method get_value (line 311) | def get_value(self) -> float:
method increment_value (line 314) | def increment_value(self, delta_t: float = 1) -> None:
class Integer (line 318) | class Integer(DecimalNumber):
method __init__ (line 335) | def __init__(
method get_value (line 340) | def get_value(self) -> int:
class Variable (line 344) | class Variable(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 447) | def __init__(
FILE: manim/mobject/text/tex_mobject.py
class SingleStringMathTex (line 46) | class SingleStringMathTex(SVGMobject):
method __init__ (line 57) | def __init__(
method __repr__ (line 109) | def __repr__(self) -> str:
method font_size (line 113) | def font_size(self) -> float:
method font_size (line 118) | def font_size(self, font_val: float) -> None:
method _get_modified_expression (line 129) | def _get_modified_expression(self, tex_string: str) -> str:
method _modify_special_strings (line 135) | def _modify_special_strings(self, tex: str) -> str:
method _remove_stray_braces (line 188) | def _remove_stray_braces(self, tex: str) -> str:
method _organize_submobjects_left_to_right (line 206) | def _organize_submobjects_left_to_right(self) -> Self:
method get_tex_string (line 210) | def get_tex_string(self) -> str:
method init_colors (line 213) | def init_colors(self, propagate_colors: bool = True) -> Self:
class MathTex (line 227) | class MathTex(SingleStringMathTex):
method __init__ (line 278) | def __init__(
method _prepare_tex_strings (line 335) | def _prepare_tex_strings(self, tex_strings: Iterable[str]) -> list[str]:
method _split_double_braces (line 351) | def _split_double_braces(tex_string: str) -> list[str]:
method _join_tex_strings_with_unique_deliminters (line 429) | def _join_tex_strings_with_unique_deliminters(
method _locate_first_match (line 465) | def _locate_first_match(
method _handle_match (line 485) | def _handle_match(self, ssIdx: int, first_match: re.Match) -> tuple[st...
method _substring_matches (line 501) | def _substring_matches(self) -> list[tuple[str, str]]:
method _main_matches (line 510) | def _main_matches(self) -> list[tuple[str, str]]:
method _break_up_by_substrings (line 518) | def _break_up_by_substrings(self) -> Self:
method get_part_by_tex (line 539) | def get_part_by_tex(self, tex: str, **kwargs: Any) -> VGroup | None:
method set_color_by_tex (line 545) | def set_color_by_tex(
method set_opacity_by_tex (line 553) | def set_opacity_by_tex(
method set_color_by_tex_to_color_map (line 581) | def set_color_by_tex_to_color_map(
method index_of_part (line 590) | def index_of_part(self, part: VMobject) -> int:
method sort_alphabetically (line 596) | def sort_alphabetically(self) -> None:
class MathTexPart (line 600) | class MathTexPart(VMobject, metaclass=ConvertToOpenGL):
method __repr__ (line 603) | def __repr__(self) -> str:
class Tex (line 607) | class Tex(MathTex):
method __init__ (line 624) | def __init__(
class BulletedList (line 639) | class BulletedList(Tex):
method __init__ (line 657) | def __init__(
method fade_all_but (line 680) | def fade_all_but(self, index_or_string: int | str, opacity: float = 0....
class Title (line 699) | class Title(Tex):
method __init__ (line 717) | def __init__(
FILE: manim/mobject/text/text_mobject.py
function remove_invisible_chars (line 90) | def remove_invisible_chars(mobject: VMobject) -> VMobject:
class Paragraph (line 114) | class Paragraph(VGroup):
method __init__ (line 152) | def __init__(
method _gen_chars (line 179) | def _gen_chars(self, lines_str_list: list) -> VGroup:
method _set_all_lines_alignments (line 219) | def _set_all_lines_alignments(self, alignment: str) -> Paragraph:
method _set_line_alignment (line 231) | def _set_line_alignment(self, alignment: str, line_no: int) -> Paragraph:
method _set_all_lines_to_initial_positions (line 244) | def _set_all_lines_to_initial_positions(self) -> Paragraph:
method _set_line_to_initial_position (line 253) | def _set_line_to_initial_position(self, line_no: int) -> Paragraph:
method _change_alignment_for_a_line (line 265) | def _change_alignment_for_a_line(self, alignment: str, line_no: int) -...
class Text (line 302) | class Text(SVGMobject):
method font_list (line 421) | def font_list() -> list[str]:
method __init__ (line 425) | def __init__(
method __repr__ (line 596) | def __repr__(self) -> str:
method font_size (line 600) | def font_size(self) -> float:
method font_size (line 611) | def font_size(self, font_val: float) -> None:
method _gen_chars (line 618) | def _gen_chars(self) -> VGroup:
method _find_indexes (line 636) | def _find_indexes(self, word: str, text: str) -> list[tuple[int, int]]:
method _text2hash (line 654) | def _text2hash(self, color: ParsableManimColor) -> str:
method _merge_settings (line 668) | def _merge_settings(
method _get_settings_from_t2xs (line 694) | def _get_settings_from_t2xs(
method _get_settings_from_gradient (line 713) | def _get_settings_from_gradient(
method _text2settings (line 732) | def _text2settings(self, color: ParsableManimColor) -> list[TextSetting]:
method _text2svg (line 799) | def _text2svg(self, color: ParsableManimColor) -> str:
method init_colors (line 833) | def init_colors(self, propagate_colors: bool = True) -> Self:
class MarkupText (line 841) | class MarkupText(SVGMobject):
method font_list (line 1141) | def font_list() -> list[str]:
method __init__ (line 1145) | def __init__(
method font_size (line 1310) | def font_size(self) -> float:
method font_size (line 1321) | def font_size(self, font_val: float) -> None:
method _text2hash (line 1328) | def _text2hash(self, color: ParsableManimColor) -> str:
method _text2svg (line 1345) | def _text2svg(self, color: ParsableManimColor | None) -> str:
method _count_real_chars (line 1385) | def _count_real_chars(self, s: str) -> int:
method _extract_gradient_tags (line 1404) | def _extract_gradient_tags(self) -> list[dict[str, Any]]:
method _parse_color (line 1438) | def _parse_color(self, col: str) -> str:
method _extract_color_tags (line 1445) | def _extract_color_tags(self) -> list[dict[str, Any]]:
method __repr__ (line 1482) | def __repr__(self) -> str:
function register_font (line 1487) | def register_font(font_file: str | Path) -> Iterator[None]:
FILE: manim/mobject/three_d/polyhedra.py
class Polyhedron (line 30) | class Polyhedron(VGroup):
method __init__ (line 98) | def __init__(
method get_edges (line 131) | def get_edges(self, faces_list: list[list[int]]) -> list[tuple[int, in...
method create_faces (line 138) | def create_faces(
method update_faces (line 148) | def update_faces(self, m: Mobject) -> None:
method extract_face_coords (line 153) | def extract_face_coords(self) -> Point3DLike_Array:
class Tetrahedron (line 162) | class Tetrahedron(Polyhedron):
method __init__ (line 183) | def __init__(self, edge_length: float = 1, **kwargs: Any):
class Octahedron (line 197) | class Octahedron(Polyhedron):
method __init__ (line 218) | def __init__(self, edge_length: float = 1, **kwargs: Any):
class Icosahedron (line 243) | class Icosahedron(Polyhedron):
method __init__ (line 264) | def __init__(self, edge_length: float = 1, **kwargs: Any):
class Dodecahedron (line 308) | class Dodecahedron(Polyhedron):
method __init__ (line 329) | def __init__(self, edge_length: float = 1, **kwargs: Any):
class ConvexHull3D (line 374) | class ConvexHull3D(Polyhedron):
method __init__ (line 429) | def __init__(self, *points: Point3D, tolerance: float = 1e-5, **kwargs...
FILE: manim/mobject/three_d/three_d_utils.py
function get_3d_vmob_gradient_start_and_end_points (line 30) | def get_3d_vmob_gradient_start_and_end_points(
function get_3d_vmob_start_corner_index (line 39) | def get_3d_vmob_start_corner_index(vmob: VMobject) -> Literal[0]:
function get_3d_vmob_end_corner_index (line 43) | def get_3d_vmob_end_corner_index(vmob: VMobject) -> int:
function get_3d_vmob_start_corner (line 47) | def get_3d_vmob_start_corner(vmob: VMobject) -> Point3D:
function get_3d_vmob_end_corner (line 53) | def get_3d_vmob_end_corner(vmob: VMobject) -> Point3D:
function get_3d_vmob_unit_normal (line 59) | def get_3d_vmob_unit_normal(vmob: VMobject, point_index: int) -> Vector3D:
function get_3d_vmob_start_corner_unit_normal (line 75) | def get_3d_vmob_start_corner_unit_normal(vmob: VMobject) -> Vector3D:
function get_3d_vmob_end_corner_unit_normal (line 79) | def get_3d_vmob_end_corner_unit_normal(vmob: VMobject) -> Vector3D:
FILE: manim/mobject/three_d/three_dimensions.py
class ThreeDVMobject (line 49) | class ThreeDVMobject(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 57) | def __init__(self, shade_in_3d: bool = True, **kwargs: Any):
class Surface (line 61) | class Surface(VGroup, metaclass=ConvertToOpenGL):
method __init__ (line 113) | def __init__(
method func (line 159) | def func(self, u: float, v: float) -> np.ndarray:
method _get_u_values_and_v_values (line 162) | def _get_u_values_and_v_values(self) -> tuple[np.ndarray, np.ndarray]:
method _setup_in_uv_space (line 173) | def _setup_in_uv_space(self) -> None:
method set_fill_by_checkerboard (line 209) | def set_fill_by_checkerboard(
method set_fill_by_value (line 234) | def set_fill_by_value(
class Sphere (line 356) | class Sphere(Surface):
method __init__ (line 444) | def __init__(
method func (line 474) | def func(self, u: float, v: float) -> Point3D:
class Dot3D (line 487) | class Dot3D(Sphere):
method __init__ (line 519) | def __init__(
class Cube (line 531) | class Cube(VGroup):
method __init__ (line 561) | def __init__(
method generate_points (line 577) | def generate_points(self) -> None:
method init_points (line 591) | def init_points(self) -> None:
class Prism (line 595) | class Prism(Cube):
method __init__ (line 618) | def __init__(
method generate_points (line 626) | def generate_points(self) -> None:
class Cone (line 633) | class Cone(Surface):
method __init__ (line 671) | def __init__(
method func (line 709) | def func(self, u: float, v: float) -> Point3D:
method get_start (line 734) | def get_start(self) -> Point3D:
method get_end (line 737) | def get_end(self) -> Point3D:
method _rotate_to_direction (line 740) | def _rotate_to_direction(self) -> None:
method set_direction (line 770) | def set_direction(self, direction: Vector3DLike) -> None:
method get_direction (line 781) | def get_direction(self) -> Vector3D:
method _set_start_and_end_attributes (line 791) | def _set_start_and_end_attributes(self, direction: Vector3D) -> None:
class Cylinder (line 801) | class Cylinder(Surface):
method __init__ (line 833) | def __init__(
method func (line 858) | def func(self, u: float, v: float) -> np.ndarray:
method add_bases (line 878) | def add_bases(self) -> None:
method _rotate_to_direction (line 907) | def _rotate_to_direction(self) -> None:
method set_direction (line 937) | def set_direction(self, direction: Vector3DLike) -> None:
method get_direction (line 950) | def get_direction(self) -> np.ndarray:
class Line3D (line 961) | class Line3D(Cylinder):
method __init__ (line 994) | def __init__(
method set_start_and_end_attrs (line 1015) | def set_start_and_end_attrs(
method pointify (line 1049) | def pointify(
method get_start (line 1076) | def get_start(self) -> Point3D:
method get_end (line 1086) | def get_end(self) -> Point3D:
method parallel_to (line 1097) | def parallel_to(
method perpendicular_to (line 1145) | def perpendicular_to(
class Arrow3D (line 1199) | class Arrow3D(Line3D):
method __init__ (line 1236) | def __init__(
method get_end (line 1274) | def get_end(self) -> np.ndarray:
class Torus (line 1278) | class Torus(Surface):
method __init__ (line 1308) | def __init__(
method func (line 1334) | def func(self, u: float, v: float) -> Point3D:
FILE: manim/mobject/types/image_mobject.py
class AbstractImageMobject (line 42) | class AbstractImageMobject(Mobject):
method __init__ (line 56) | def __init__(
method get_pixel_array (line 68) | def get_pixel_array(self) -> PixelArray:
method set_color (line 71) | def set_color(
method set_resampling_algorithm (line 80) | def set_resampling_algorithm(self, resampling_algorithm: int) -> Self:
method reset_points (line 112) | def reset_points(self) -> Self:
class ImageMobject (line 133) | class ImageMobject(AbstractImageMobject):
method __init__ (line 186) | def __init__(
method get_pixel_array (line 216) | def get_pixel_array(self) -> PixelArray:
method set_color (line 220) | def set_color(
method set_opacity (line 235) | def set_opacity(self, alpha: float) -> Self:
method fade (line 248) | def fade(self, darkness: float = 0.5, family: bool = True) -> Self:
method interpolate_color (line 263) | def interpolate_color(
method get_style (line 303) | def get_style(self) -> dict[str, Any]:
class ImageMobjectFromCamera (line 315) | class ImageMobjectFromCamera(AbstractImageMobject):
method __init__ (line 316) | def __init__(
method get_pixel_array (line 334) | def get_pixel_array(self) -> PixelArray:
method add_display_frame (line 338) | def add_display_frame(self, **kwargs: Any) -> Self:
method interpolate_color (line 345) | def interpolate_color(
FILE: manim/mobject/types/point_cloud_mobject.py
class PMobject (line 47) | class PMobject(Mobject, metaclass=ConvertToOpenGL):
method __init__ (line 76) | def __init__(self, stroke_width: int = DEFAULT_STROKE_WIDTH, **kwargs:...
method reset_points (line 80) | def reset_points(self) -> Self:
method get_array_attrs (line 85) | def get_array_attrs(self) -> list[str]:
method add_points (line 88) | def add_points(
method set_color (line 112) | def set_color(
method get_stroke_width (line 122) | def get_stroke_width(self) -> int:
method set_stroke_width (line 125) | def set_stroke_width(self, width: int, family: bool = True) -> Self:
method set_color_by_gradient (line 131) | def set_color_by_gradient(self, *colors: ParsableManimColor) -> Self:
method set_colors_by_radial_gradient (line 137) | def set_colors_by_radial_gradient(
method match_colors (line 158) | def match_colors(self, mobject: Mobject) -> Self:
method filter_out (line 163) | def filter_out(self, condition: npt.NDArray) -> Self:
method thin_out (line 170) | def thin_out(self, factor: int = 5) -> Self:
method sort_points (line 179) | def sort_points(
method fade_to (line 188) | def fade_to(
method get_all_rgbas (line 196) | def get_all_rgbas(self) -> npt.NDArray:
method ingest_submobjects (line 199) | def ingest_submobjects(self) -> Self:
method get_color (line 207) | def get_color(self) -> ManimColor:
method point_from_proportion (line 210) | def point_from_proportion(self, alpha: float) -> Any:
method get_mobject_type_class (line 215) | def get_mobject_type_class() -> type[PMobject]:
method align_points_with_larger (line 219) | def align_points_with_larger(self, larger_mobject: Mobject) -> None:
method get_point_mobject (line 225) | def get_point_mobject(self, center: Point3DLike | None = None) -> Point:
method interpolate_color (line 230) | def interpolate_color(
method pointwise_become_partial (line 243) | def pointwise_become_partial(self, mobject: Mobject, a: float, b: floa...
class Mobject1D (line 252) | class Mobject1D(PMobject, metaclass=ConvertToOpenGL):
method __init__ (line 253) | def __init__(self, density: int = DEFAULT_POINT_DENSITY_1D, **kwargs: ...
method add_line (line 258) | def add_line(
class Mobject2D (line 276) | class Mobject2D(PMobject, metaclass=ConvertToOpenGL):
method __init__ (line 277) | def __init__(self, density: int = DEFAULT_POINT_DENSITY_2D, **kwargs: ...
class PGroup (line 283) | class PGroup(PMobject):
method __init__ (line 306) | def __init__(self, *pmobs: Any, **kwargs: Any) -> None:
method fade_to (line 315) | def fade_to(
class PointCloudDot (line 324) | class PointCloudDot(Mobject1D):
method __init__ (line 356) | def __init__(
method init_points (line 372) | def init_points(self) -> None:
method generate_points (line 376) | def generate_points(self) -> None:
class Point (line 393) | class Point(PMobject):
method __init__ (line 414) | def __init__(
method init_points (line 420) | def init_points(self) -> None:
method generate_points (line 425) | def generate_points(self) -> None:
FILE: manim/mobject/types/vectorized_mobject.py
class VMobject (line 81) | class VMobject(Mobject):
method __init__ (line 109) | def __init__(
method _assert_valid_submobjects (line 174) | def _assert_valid_submobjects(self, submobjects: Iterable[VMobject]) -...
method __iter__ (line 177) | def __iter__(self) -> Iterator[VMobject]:
method n_points_per_curve (line 182) | def n_points_per_curve(self) -> int:
method get_group_class (line 185) | def get_group_class(self) -> type[VGroup]:
method get_mobject_type_class (line 189) | def get_mobject_type_class() -> type[VMobject]:
method init_colors (line 193) | def init_colors(self, propagate_colors: bool = True) -> Self:
method generate_rgbas_array (line 223) | def generate_rgbas_array(
method update_rgbas_array (line 256) | def update_rgbas_array(
method set_fill (line 282) | def set_fill(
method set_stroke (line 332) | def set_stroke(
method set_cap_style (line 363) | def set_cap_style(self, cap_style: CapStyleType) -> Self:
method set_background_stroke (line 391) | def set_background_stroke(self, **kwargs) -> Self:
method set_style (line 396) | def set_style(
method get_style (line 434) | def get_style(self, simple: bool = False) -> dict:
method match_style (line 458) | def match_style(self, vmobject: VMobject, family: bool = True) -> Self:
method set_color (line 473) | def set_color(self, color: ParsableManimColor, family: bool = True) ->...
method set_opacity (line 478) | def set_opacity(self, opacity: float, family: bool = True) -> Self:
method scale (line 484) | def scale(
method fade (line 549) | def fade(self, darkness: float = 0.5, family: bool = True) -> Self:
method get_fill_rgbas (line 560) | def get_fill_rgbas(self) -> FloatRGBA_Array:
method get_fill_color (line 566) | def get_fill_color(self) -> ManimColor:
method get_fill_opacity (line 575) | def get_fill_opacity(self) -> ManimFloat:
method get_fill_colors (line 584) | def get_fill_colors(self) -> list[ManimColor | None]:
method get_fill_opacities (line 590) | def get_fill_opacities(self) -> npt.NDArray[ManimFloat]:
method get_stroke_rgbas (line 593) | def get_stroke_rgbas(self, background: bool = False) -> FloatRGBA_Array:
method get_stroke_color (line 605) | def get_stroke_color(self, background: bool = False) -> ManimColor | N...
method get_stroke_width (line 610) | def get_stroke_width(self, background: bool = False) -> float:
method get_stroke_opacity (line 619) | def get_stroke_opacity(self, background: bool = False) -> ManimFloat:
method get_stroke_colors (line 622) | def get_stroke_colors(self, background: bool = False) -> list[ManimCol...
method get_stroke_opacities (line 628) | def get_stroke_opacities(self, background: bool = False) -> npt.NDArra...
method get_color (line 631) | def get_color(self) -> ManimColor:
method nonempty_submobjects (line 638) | def nonempty_submobjects(self) -> Sequence[VMobject]:
method split (line 645) | def split(self) -> list[VMobject]:
method set_sheen_direction (line 649) | def set_sheen_direction(self, direction: Vector3DLike, family: bool = ...
method rotate_sheen_direction (line 676) | def rotate_sheen_direction(
method set_sheen (line 709) | def set_sheen(
method get_sheen_direction (line 747) | def get_sheen_direction(self) -> Vector3D:
method get_sheen_factor (line 750) | def get_sheen_factor(self) -> float:
method get_gradient_start_and_end_points (line 753) | def get_gradient_start_and_end_points(self) -> tuple[Point3D, Point3D]:
method color_using_background_image (line 765) | def color_using_background_image(self, background_image: Image | str) ...
method get_background_image (line 772) | def get_background_image(self) -> Image | str:
method match_background_image (line 775) | def match_background_image(self, vmobject: VMobject) -> Self:
method set_shade_in_3d (line 779) | def set_shade_in_3d(
method set_points (line 788) | def set_points(self, points: Point3DLike_Array) -> Self:
method resize_points (line 792) | def resize_points(
method set_anchors_and_handles (line 813) | def set_anchors_and_handles(
method clear_points (line 847) | def clear_points(self) -> None:
method append_points (line 851) | def append_points(self, new_points: Point3DLike_Array) -> Self:
method start_new_path (line 875) | def start_new_path(self, point: Point3DLike) -> Self:
method add_cubic_bezier_curve (line 905) | def add_cubic_bezier_curve(
method add_cubic_bezier_curves (line 916) | def add_cubic_bezier_curves(self, curves) -> None:
method add_cubic_bezier_curve_to (line 919) | def add_cubic_bezier_curve_to(
method add_quadratic_bezier_curve_to (line 951) | def add_quadratic_bezier_curve_to(
method add_line_to (line 977) | def add_line_to(self, point: Point3DLike) -> Self:
method add_smooth_curve_to (line 999) | def add_smooth_curve_to(self, *points: Point3DLike) -> Self:
method has_new_path_started (line 1042) | def has_new_path_started(self) -> bool:
method get_last_point (line 1047) | def get_last_point(self) -> Point3D:
method is_closed (line 1050) | def is_closed(self) -> bool:
method close_path (line 1054) | def close_path(self) -> None:
method add_points_as_corners (line 1058) | def add_points_as_corners(self, points: Point3DLike_Array) -> Self:
method set_points_as_corners (line 1102) | def set_points_as_corners(self, points: Point3DLike_Array) -> Self:
method set_points_smoothly (line 1149) | def set_points_smoothly(self, points: Point3DLike_Array) -> Self:
method change_anchor_mode (line 1154) | def change_anchor_mode(self, mode: Literal["jagged", "smooth"]) -> Self:
method make_smooth (line 1188) | def make_smooth(self) -> Self:
method make_jagged (line 1191) | def make_jagged(self) -> Self:
method add_subpath (line 1194) | def add_subpath(self, points: CubicBezierPathLike) -> Self:
method append_vectorized_mobject (line 1199) | def append_vectorized_mobject(self, vectorized_mobject: VMobject) -> N...
method apply_function (line 1206) | def apply_function(
method rotate (line 1221) | def rotate(
method scale_handle_to_anchor_distances (line 1233) | def scale_handle_to_anchor_distances(self, factor: float) -> Self:
method consider_points_equals (line 1265) | def consider_points_equals(self, p0: Point3DLike, p1: Point3DLike) -> ...
method consider_points_equals_2d (line 1268) | def consider_points_equals_2d(self, p0: Point2DLike, p1: Point2DLike) ...
method get_cubic_bezier_tuples_from_points (line 1292) | def get_cubic_bezier_tuples_from_points(
method gen_cubic_bezier_tuples_from_points (line 1297) | def gen_cubic_bezier_tuples_from_points(
method get_cubic_bezier_tuples (line 1323) | def get_cubic_bezier_tuples(self) -> CubicBezierPoints_Array:
method _gen_subpaths_from_points (line 1326) | def _gen_subpaths_from_points(
method get_subpaths_from_points (line 1360) | def get_subpaths_from_points(self, points: CubicBezierPath) -> list[Cu...
method gen_subpaths_from_points_2d (line 1368) | def gen_subpaths_from_points_2d(
method get_subpaths (line 1376) | def get_subpaths(self) -> list[CubicSpline]:
method get_nth_curve_points (line 1388) | def get_nth_curve_points(self, n: int) -> CubicBezierPoints:
method get_nth_curve_function (line 1405) | def get_nth_curve_function(self, n: int) -> Callable[[float], Point3D]:
method get_nth_curve_length_pieces (line 1420) | def get_nth_curve_length_pieces(
method get_nth_curve_length (line 1448) | def get_nth_curve_length(
method get_nth_curve_function_with_length (line 1471) | def get_nth_curve_function_with_length(
method get_num_curves (line 1498) | def get_num_curves(self) -> int:
method get_curve_functions (line 1509) | def get_curve_functions(
method get_curve_functions_with_lengths (line 1524) | def get_curve_functions_with_lengths(
method point_from_proportion (line 1544) | def point_from_proportion(self, alpha: float) -> Point3D:
method proportion_from_point (line 1606) | def proportion_from_point(
method get_anchors_and_handles (line 1662) | def get_anchors_and_handles(self) -> list[Point3D_Array]:
method get_start_anchors (line 1676) | def get_start_anchors(self) -> Point3D_Array:
method get_end_anchors (line 1686) | def get_end_anchors(self) -> Point3D_Array:
method get_anchors (line 1697) | def get_anchors(self) -> list[Point3D]:
method get_points_defining_boundary (line 1712) | def get_points_defining_boundary(self) -> Point3D_Array:
method get_arc_length (line 1718) | def get_arc_length(self, sample_points_per_curve: int | None = None) -...
method align_points (line 1739) | def align_points(self, vmobject: VMobject) -> Self:
method insert_n_curves (line 1816) | def insert_n_curves(self, n: int) -> Self:
method insert_n_curves_to_point_list (line 1840) | def insert_n_curves_to_point_list(
method align_rgbas (line 1866) | def align_rgbas(self, vmobject: VMobject) -> Self:
method get_point_mobject (line 1879) | def get_point_mobject(self, center: Point3DLike | None = None) -> Vect...
method interpolate_color (line 1886) | def interpolate_color(
method pointwise_become_partial (line 1910) | def pointwise_become_partial(
method get_subcurve (line 2008) | def get_subcurve(self, a: float, b: float) -> Self:
method get_direction (line 2036) | def get_direction(self) -> Literal["CW", "CCW"]:
method reverse_direction (line 2056) | def reverse_direction(self) -> Self:
method force_direction (line 2081) | def force_direction(self, target_direction: Literal["CW", "CCW"]) -> S...
class VGroup (line 2099) | class VGroup(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 2158) | def __init__(
method __repr__ (line 2164) | def __repr__(self) -> str:
method __str__ (line 2167) | def __str__(self) -> str:
method add (line 2173) | def add(
method __add__ (line 2286) | def __add__(self, vmobject: VMobject) -> Self:
method __iadd__ (line 2289) | def __iadd__(self, vmobject: VMobject) -> Self:
method __sub__ (line 2292) | def __sub__(self, vmobject: VMobject) -> Self:
method __isub__ (line 2297) | def __isub__(self, vmobject: VMobject) -> Self:
method __setitem__ (line 2300) | def __setitem__(self, key: int, value: VMobject | Sequence[VMobject]) ...
method __getitem__ (line 2324) | def __getitem__(self, key: int | slice) -> VMobject:
class VDict (line 2330) | class VDict(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 2428) | def __init__(
method __repr__ (line 2441) | def __repr__(self) -> str:
method add (line 2444) | def add(
method remove (line 2477) | def remove(self, key: Hashable) -> Self:
method __getitem__ (line 2505) | def __getitem__(self, key: Hashable):
method __setitem__ (line 2527) | def __setitem__(self, key: Hashable, value: VMobject) -> None:
method __delitem__ (line 2552) | def __delitem__(self, key: Hashable):
method __contains__ (line 2584) | def __contains__(self, key: Hashable):
method get_all_submobjects (line 2608) | def get_all_submobjects(self) -> list[list]:
method add_key_value_pair (line 2626) | def add_key_value_pair(self, key: Hashable, value: VMobject) -> None:
class VectorizedPoint (line 2667) | class VectorizedPoint(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 2668) | def __init__(
method width (line 2691) | def width(self) -> float:
method height (line 2695) | def height(self) -> float:
method get_location (line 2698) | def get_location(self) -> Point3D:
method set_location (line 2701) | def set_location(self, new_loc: Point3D):
class CurvesAsSubmobjects (line 2705) | class CurvesAsSubmobjects(VGroup):
method __init__ (line 2722) | def __init__(self, vmobject: VMobject, **kwargs) -> None:
method point_from_proportion (line 2731) | def point_from_proportion(self, alpha: float) -> Point3D:
method _throw_error_if_no_submobjects (line 2776) | def _throw_error_if_no_submobjects(self):
method _get_submobjects_with_points (line 2783) | def _get_submobjects_with_points(self):
class DashedVMobject (line 2795) | class DashedVMobject(VMobject, metaclass=ConvertToOpenGL):
method __init__ (line 2849) | def __init__(
FILE: manim/mobject/utils.py
function get_mobject_class (line 21) | def get_mobject_class() -> type:
function get_vectorized_mobject_class (line 50) | def get_vectorized_mobject_class() -> type:
function get_point_mobject_class (line 80) | def get_point_mobject_class() -> type:
FILE: manim/mobject/value_tracker.py
class ValueTracker (line 21) | class ValueTracker(Mobject, metaclass=ConvertToOpenGL):
method __init__ (line 78) | def __init__(self, value: float = 0, **kwargs: Any) -> None:
method get_value (line 83) | def get_value(self) -> float:
method set_value (line 88) | def set_value(self, value: float) -> Self:
method increment_value (line 93) | def increment_value(self, d_value: float) -> Self:
method __bool__ (line 98) | def __bool__(self) -> bool:
method __add__ (line 102) | def __add__(self, d_value: float | Mobject) -> ValueTracker:
method __iadd__ (line 112) | def __iadd__(self, d_value: float | Mobject) -> Self:
method __floordiv__ (line 121) | def __floordiv__(self, d_value: float) -> ValueTracker:
method __ifloordiv__ (line 127) | def __ifloordiv__(self, d_value: float) -> Self:
method __mod__ (line 132) | def __mod__(self, d_value: float) -> ValueTracker:
method __imod__ (line 138) | def __imod__(self, d_value: float) -> Self:
method __mul__ (line 143) | def __mul__(self, d_value: float) -> ValueTracker:
method __imul__ (line 149) | def __imul__(self, d_value: float) -> Self:
method __pow__ (line 154) | def __pow__(self, d_value: float) -> ValueTracker:
method __ipow__ (line 160) | def __ipow__(self, d_value: float) -> Self:
method __sub__ (line 165) | def __sub__(self, d_value: float | Mobject) -> ValueTracker:
method __isub__ (line 175) | def __isub__(self, d_value: float | Mobject) -> Self:
method __truediv__ (line 184) | def __truediv__(self, d_value: float) -> ValueTracker:
method __itruediv__ (line 190) | def __itruediv__(self, d_value: float) -> Self:
method interpolate (line 195) | def interpolate(
class ComplexValueTracker (line 207) | class ComplexValueTracker(ValueTracker):
method get_value (line 234) | def get_value(self) -> complex: # type: ignore [override]
method set_value (line 238) | def set_value(self, value: complex | float) -> Self:
FILE: manim/mobject/vector_field.py
class VectorField (line 58) | class VectorField(VGroup):
method __init__ (line 84) | def __init__(
method shift_func (line 132) | def shift_func(
method scale_func (line 154) | def scale_func(
method fit_to_coordinate_system (line 190) | def fit_to_coordinate_system(self, coordinate_system: CoordinateSystem):
method nudge (line 206) | def nudge(
method nudge_submobjects (line 291) | def nudge_submobjects(
method get_nudge_updater (line 320) | def get_nudge_updater(
method start_submobject_movement (line 343) | def start_submobject_movement(
method stop_submobject_movement (line 373) | def stop_submobject_movement(self) -> VectorField:
method get_colored_background_image (line 385) | def get_colored_background_image(self, sampling_rate: int = 5) -> Imag...
method get_vectorized_rgba_gradient_function (line 425) | def get_vectorized_rgba_gradient_function(
class ArrowVectorField (line 469) | class ArrowVectorField(VectorField):
method __init__ (line 552) | def __init__(
method get_vector (line 622) | def get_vector(self, point: np.ndarray):
class StreamLines (line 648) | class StreamLines(VectorField):
method __init__ (line 726) | def __init__(
method create (line 868) | def create(
method start_animation (line 924) | def start_animation(
method end_animation (line 991) | def end_animation(self) -> AnimationGroup:
FILE: manim/plugins/plugins_flags.py
function get_plugins (line 13) | def get_plugins() -> dict[str, Any]:
function list_plugins (line 21) | def list_plugins() -> None:
FILE: manim/renderer/cairo_renderer.py
class CairoRenderer (line 26) | class CairoRenderer:
method __init__ (line 38) | def __init__(
method init_scene (line 58) | def init_scene(self, scene: Scene) -> None:
method play (line 64) | def play(
method update_frame (line 125) | def update_frame( # TODO Description in Docstring
method render (line 163) | def render(
method get_frame (line 172) | def get_frame(self) -> PixelArray:
method add_frame (line 183) | def add_frame(self, frame: PixelArray, num_frames: int = 1) -> None:
method freeze_current_frame (line 199) | def freeze_current_frame(self, duration: float) -> None:
method show_frame (line 213) | def show_frame(self, scene: Scene) -> None:
method save_static_frame_data (line 220) | def save_static_frame_data(
method update_skipping_status (line 247) | def update_skipping_status(self) -> None:
method scene_finished (line 271) | def scene_finished(self, scene: Scene) -> None:
FILE: manim/renderer/opengl_renderer.py
class OpenGLCamera (line 68) | class OpenGLCamera(OpenGLMobject):
method __init__ (line 95) | def __init__(
method get_position (line 193) | def get_position(self) -> Point3D:
method set_position (line 197) | def set_position(self, position: Point3D) -> Self:
method formatted_view_matrix (line 203) | def formatted_view_matrix(self) -> FlattenedMatrix4x4:
method unformatted_view_matrix (line 208) | def unformatted_view_matrix(self) -> MatrixMN:
method init_points (line 211) | def init_points(self) -> None:
method to_default_state (line 218) | def to_default_state(self) -> Self:
method refresh_rotation_matrix (line 229) | def refresh_rotation_matrix(self) -> None:
method rotate (line 243) | def rotate(
method set_euler_angles (line 285) | def set_euler_angles(
method set_theta (line 331) | def set_theta(self, theta: float) -> Self:
method set_phi (line 343) | def set_phi(self, phi: float) -> Self:
method set_gamma (line 355) | def set_gamma(self, gamma: float) -> Self:
method increment_theta (line 367) | def increment_theta(self, dtheta: float) -> Self:
method increment_phi (line 380) | def increment_phi(self, dphi: float) -> Self:
method increment_gamma (line 395) | def increment_gamma(self, dgamma: float) -> Self:
method get_shape (line 408) | def get_shape(self) -> tuple[float, float]:
method get_center (line 412) | def get_center(self) -> Point3D:
method get_width (line 423) | def get_width(self) -> float:
method get_height (line 429) | def get_height(self) -> float:
method get_focal_distance (line 436) | def get_focal_distance(self) -> float:
method interpolate (line 441) | def interpolate(
class OpenGLRenderer (line 453) | class OpenGLRenderer:
method __init__ (line 485) | def __init__(
method init_scene (line 517) | def init_scene(self, scene: Scene) -> None:
method should_create_window (line 567) | def should_create_window(self) -> bool:
method get_pixel_shape (line 590) | def get_pixel_shape(self) -> tuple[int, int] | None:
method refresh_perspective_uniforms (line 607) | def refresh_perspective_uniforms(self, camera: OpenGLCamera) -> None:
method render_mobject (line 646) | def render_mobject(self, mobject: OpenGLMobject | OpenGLVMobject) -> N...
method get_texture_id (line 723) | def get_texture_id(self, path: str) -> int:
method _create_texture (line 745) | def _create_texture(self, image_path: str) -> int:
method update_skipping_status (line 786) | def update_skipping_status(self) -> None:
method play (line 816) | def play(
method clear_screen (line 865) | def clear_screen(self) -> None:
method render (line 878) | def render(
method update_frame (line 917) | def update_frame(self, scene: Scene) -> None:
method scene_finished (line 956) | def scene_finished(self, scene: Scene) -> None:
method should_save_last_frame (line 984) | def should_save_last_frame(self) -> bool:
method get_image (line 998) | def get_image(self) -> Image.Image:
method save_static_frame_data (line 1035) | def save_static_frame_data(
method get_frame_buffer_object (line 1040) | def get_frame_buffer_object(
method get_raw_frame_buffer_object_data (line 1088) | def get_raw_frame_buffer_object_data(self, dtype: str = "f1") -> bytes:
method get_frame (line 1117) | def get_frame(self) -> RGBAPixelArray:
method pixel_coords_to_space_coords (line 1147) | def pixel_coords_to_space_coords(
method background_color (line 1201) | def background_color(self) -> FloatRGBA:
method background_color (line 1206) | def background_color(self, value: ParsableManimColor) -> None:
FILE: manim/renderer/opengl_renderer_window.py
class Window (line 18) | class Window(PygletWindow):
method __init__ (line 25) | def __init__(
method on_mouse_motion (line 79) | def on_mouse_motion(self, x: int, y: int, dx: int, dy: int) -> None:
method on_mouse_scroll (line 85) | def on_mouse_scroll(self, x: int, y: int, x_offset: float, y_offset: f...
method on_key_press (line 95) | def on_key_press(self, symbol: int, modifiers: int) -> bool:
method on_key_release (line 101) | def on_key_release(self, symbol: int, modifiers: int) -> None:
method on_mouse_drag (line 107) | def on_mouse_drag(
method find_initial_position (line 115) | def find_initial_position(
method on_mouse_press (line 147) | def on_mouse_press(self, x: int, y: int, button: int, modifiers: int) ...
FILE: manim/renderer/shader.py
function get_shader_code_from_file (line 39) | def get_shader_code_from_file(file_path: Path) -> str:
function filter_attributes (line 58) | def filter_attributes(
class Object3D (line 85) | class Object3D:
method __init__ (line 86) | def __init__(self, *children: Object3D):
method interpolate (line 95) | def interpolate(self, start: Object3D, end: Object3D, alpha: float, _:...
method single_copy (line 101) | def single_copy(self) -> Object3D:
method copy (line 107) | def copy(self) -> Object3D:
method add (line 123) | def add(self, *children: Object3D) -> None:
method remove (line 134) | def remove(self, *children: Object3D, current_children_only: bool = Tr...
method get_position (line 145) | def get_position(self) -> Point3D:
method set_position (line 148) | def set_position(self, position: Point3D) -> Self:
method get_meshes (line 152) | def get_meshes(self) -> Iterator[Mesh]:
method get_family (line 160) | def get_family(self) -> Iterator[Object3D]:
method align_data_and_family (line 167) | def align_data_and_family(self, _: Any) -> None:
method hierarchical_model_matrix (line 170) | def hierarchical_model_matrix(self) -> MatrixMN:
method hierarchical_normal_matrix (line 181) | def hierarchical_normal_matrix(self) -> MatrixMN:
method init_updaters (line 192) | def init_updaters(self) -> None:
method update (line 198) | def update(self, dt: float = 0) -> Self:
method get_time_based_updaters (line 207) | def get_time_based_updaters(self) -> list[MeshTimeBasedUpdater]:
method has_time_based_updater (line 210) | def has_time_based_updater(self) -> bool:
method get_updaters (line 213) | def get_updaters(self) -> list[MeshUpdater]:
method add_updater (line 216) | def add_updater(
method _add_time_based_updater (line 232) | def _add_time_based_updater(
method _add_non_time_updater (line 240) | def _add_non_time_updater(
method remove_updater (line 248) | def remove_updater(self, update_function: MeshUpdater) -> Self:
method clear_updaters (line 256) | def clear_updaters(self) -> Self:
method match_updaters (line 262) | def match_updaters(self, mesh: Object3D) -> Self:
method suspend_updating (line 268) | def suspend_updating(self) -> Self:
method resume_updating (line 272) | def resume_updating(self, call_updater: bool = True) -> Self:
method refresh_has_updater_status (line 278) | def refresh_has_updater_status(self) -> Self:
class Mesh (line 283) | class Mesh(Object3D):
method __init__ (line 284) | def __init__(
method single_copy (line 313) | def single_copy(self) -> Mesh:
method set_uniforms (line 327) | def set_uniforms(self, renderer: OpenGLRenderer) -> None:
method render (line 338) | def render(self) -> None:
class Shader (line 379) | class Shader:
method __init__ (line 380) | def __init__(
method set_uniform (line 421) | def set_uniform(self, name: str, value: Any) -> None:
class FullScreenQuad (line 426) | class FullScreenQuad(Mesh):
method __init__ (line 427) | def __init__(
method render (line 478) | def render(self) -> None:
FILE: manim/renderer/shader_wrapper.py
function get_shader_dir (line 28) | def get_shader_dir():
function find_file (line 32) | def find_file(file_name: Path, directories: list[Path]) -> Path:
class ShaderWrapper (line 49) | class ShaderWrapper:
method __init__ (line 50) | def __init__(
method copy (line 73) | def copy(self):
method is_valid (line 84) | def is_valid(self) -> bool:
method get_id (line 93) | def get_id(self) -> str:
method get_program_id (line 96) | def get_program_id(self) -> int:
method create_id (line 99) | def create_id(self):
method refresh_id (line 114) | def refresh_id(self) -> None:
method create_program_id (line 118) | def create_program_id(self):
method init_program_code (line 126) | def init_program_code(self):
method get_program_code (line 138) | def get_program_code(self):
method replace_code (line 141) | def replace_code(self, old: str, new: str) -> None:
method combine_with (line 148) | def combine_with(self, *shader_wrappers: "ShaderWrapper") -> Self: # ...
function get_shader_code_from_file (line 173) | def get_shader_code_from_file(filename: Path) -> str | None:
function get_colormap_code (line 207) | def get_colormap_code(rgb_list: FloatRGBLike_Array) -> str:
FILE: manim/renderer/vectorized_mobject_rendering.py
function build_matrix_lists (line 26) | def build_matrix_lists(
function render_opengl_vectorized_mobject_fill (line 50) | def render_opengl_vectorized_mobject_fill(
function render_mobject_fills_with_matrix (line 60) | def render_mobject_fills_with_matrix(
function triangulate_mobject (line 118) | def triangulate_mobject(mob: Open
Condensed preview — 1305 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,865K chars).
[
{
"path": ".codecov.yml",
"chars": 234,
"preview": "codecov:\n notify:\n require_ci_to_pass: no\n after_n_builds: 1\ncoverage:\n status:\n project:\n default:\n "
},
{
"path": ".codespell_ignorewords",
"chars": 37,
"preview": " nam\n sherif\n falsy\n medias\n strager\n"
},
{
"path": ".codespellrc",
"chars": 150,
"preview": "[codespell]\ncheck-hidden = True\nskip = .git,*.js,*.js.map,*.css,*.css.map,*.html,*.po,*.pot,uv.lock,*.log,*.svg\nignore-w"
},
{
"path": ".dockerignore",
"chars": 207,
"preview": ".git\n\n# Development / test artifacts\n__pycache__\n**/__pycache__\n*.pyc\n*.pyo\n*.pyd\n*.egg-info\ndist/\nbuild/\ncoverage.xml\n\n"
},
{
"path": ".flake8",
"chars": 1465,
"preview": "[flake8]\n# Exclude the grpc generated code\nexclude = ./manim/grpc/gen/*, __pycache__,.git,\nper-file-ignores = __init__.p"
},
{
"path": ".git-blame-ignore-revs",
"chars": 68,
"preview": "# Switched to ruff format:\n24025b60d57301b0a59754c38d77bccd8ed69feb\n"
},
{
"path": ".gitattributes",
"chars": 247,
"preview": "# Declare files that always have LF line endings on checkout\n* text eol=lf\n*.bat text eol=crlf\n\n# Denote all files that"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 1671,
"preview": "---\nname: Manim bug\nabout: Report a bug or unexpected behavior when running Manim\ntitle: \"\"\nlabels: bug\nassignees: ''\n\n-"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 472,
"preview": "---\nname: Feature request\nabout: Request a new feature for Manim\ntitle: \"\"\nlabels: new feature\nassignees: ''\n\n---\n\n## De"
},
{
"path": ".github/ISSUE_TEMPLATE/installation_issue.md",
"chars": 1624,
"preview": "---\nname: Installation issue\nabout: Report issues with the installation process of Manim\ntitle: \"\"\nlabels: bug, installa"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/bugfix.md",
"chars": 1006,
"preview": "<!-- Thank you for contributing to ManimCommunity!\nBefore filling in the details, ensure:\n- The title of your PR gives a"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/documentation.md",
"chars": 1106,
"preview": "<!-- Thank you for contributing to ManimCommunity!\nBefore filling in the details, ensure:\n- The title of your PR gives a"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE/hackathon.md",
"chars": 684,
"preview": "Thanks for your contribution for the manim community hackathon!\n\nPlease make sure your pull request has a meaningful tit"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1253,
"preview": "<!-- Thank you for contributing to Manim! Learn more about the process in our contributing guidelines: https://docs.mani"
},
{
"path": ".github/codeql.yml",
"chars": 525,
"preview": "query-filters:\n - exclude:\n id: py/init-calls-subclass\n - exclude:\n id: py/unexpected-raise-in-s"
},
{
"path": ".github/dependabot.yml",
"chars": 266,
"preview": "version: 2\nupdates:\n - package-ecosystem: \"github-actions\"\n directory: \"/\"\n schedule:\n interval: \"monthly\"\n "
},
{
"path": ".github/manimdependency.json",
"chars": 1289,
"preview": "{\n \"windows\": {\n \"tinytex\": [\n \"standalone\",\n \"preview\",\n \"doublestroke\",\n "
},
{
"path": ".github/release.yml",
"chars": 1250,
"preview": "# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes\n\nchangelog:"
},
{
"path": ".github/scripts/ci_build_cairo.py",
"chars": 8600,
"preview": "# Logic is as follows:\n# 1. Download cairo source code: https://cairographics.org/releases/cairo-<version>.tar.xz\n# 2. V"
},
{
"path": ".github/workflows/cffconvert.yml",
"chars": 410,
"preview": "name: cffconvert\n\non:\n push:\n paths:\n - CITATION.cff\n\njobs:\n validate:\n name: \"validate\"\n runs-on: ubunt"
},
{
"path": ".github/workflows/ci.yml",
"chars": 6072,
"preview": "name: CI\n\nconcurrency:\n group: ${{ github.ref }}\n cancel-in-progress: true\n\non:\n push:\n branches:\n - main\n p"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 878,
"preview": "name: \"CodeQL\"\n\non:\n push:\n branches: [ \"main\" ]\n pull_request:\n branches: [ \"main\" ]\n schedule:\n - cron: \"2"
},
{
"path": ".github/workflows/dependent-issues.yml",
"chars": 895,
"preview": "name: Dependent Issues\n\non:\n issues:\n types:\n - opened\n - edited\n - reopened\n pull_request_target:\n "
},
{
"path": ".github/workflows/publish-docker.yml",
"chars": 1904,
"preview": "name: Publish Docker Image\n\non:\n push:\n branches:\n - main\n release:\n types: [released]\n\njobs:\n docker-late"
},
{
"path": ".github/workflows/python-publish.yml",
"chars": 1051,
"preview": "name: Publish Release\n\non:\n release:\n types: [released]\n\njobs:\n release:\n name: \"Publish release\"\n runs-on: u"
},
{
"path": ".github/workflows/release-publish-documentation.yml",
"chars": 2780,
"preview": "name: Publish downloadable documentation\n\non:\n release:\n types: [released]\n workflow_dispatch:\n\njobs:\n build-and-p"
},
{
"path": ".gitignore",
"chars": 1940,
"preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packagi"
},
{
"path": ".pre-commit-config.yaml",
"chars": 1126,
"preview": "default_stages: [pre-commit, pre-push]\nfail_fast: false\nexclude: ^(manim/grpc/gen/|docs/i18n/)\nrepos:\n - repo: https://"
},
{
"path": ".pylintrc",
"chars": 18117,
"preview": "[MASTER]\n\n# A comma-separated list of package or module names from where C extensions may\n# be loaded. Extensions are lo"
},
{
"path": ".readthedocs.yml",
"chars": 316,
"preview": "version: 2\n\nsphinx:\n configuration: docs/source/conf.py\n\nbuild:\n os: ubuntu-22.04\n\n tools:\n python: \"3.13\"\n\n apt_"
},
{
"path": "CITATION.cff",
"chars": 478,
"preview": "# YAML 1.2\n---\nauthors:\n -\n name: \"The Manim Community Developers\"\ncff-version: \"1.2.0\"\ndate-released: 2026-02-27\nli"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 13833,
"preview": "\n\n# Code of Conduct\n\n\n\n > TL;DR Be excellent to each other; we're a community after all. If you run into issues with o"
},
{
"path": "CONTRIBUTING.md",
"chars": 162,
"preview": "# Thanks for your interest in contributing!\n\nPlease read our contributing guidelines which are hosted at https://docs.ma"
},
{
"path": "LICENSE",
"chars": 1072,
"preview": "MIT License\n\nCopyright (c) 2018 3Blue1Brown LLC\n\nPermission is hereby granted, free of charge, to any person obtaining a"
},
{
"path": "LICENSE.community",
"chars": 1088,
"preview": "MIT License\n\nCopyright (c) 2024, the Manim Community Developers\n\nPermission is hereby granted, free of charge, to any pe"
},
{
"path": "README.md",
"chars": 8378,
"preview": "<p align=\"center\">\n <a href=\"https://www.manim.community/\"><img src=\"https://raw.githubusercontent.com/ManimCommunity"
},
{
"path": "crowdin.yml",
"chars": 124,
"preview": "files:\n - source: /docs/i18n/gettext/**/*.pot\n translation: /docs/i18n/%two_letters_code%/LC_MESSAGES/**/%file_name%"
},
{
"path": "docker/Dockerfile",
"chars": 2977,
"preview": "# ── Stage 1: builder ─────────────────────────────────────────────────────────\nFROM python:3.14-slim AS builder\n\nRUN ap"
},
{
"path": "docker/readme.md",
"chars": 933,
"preview": "See the [main README](https://github.com/ManimCommunity/manim/blob/main/README.md) for some instructions on how to use t"
},
{
"path": "docker/texlive-profile.txt",
"chars": 297,
"preview": "selected_scheme scheme-minimal\nTEXDIR /usr/local/texlive\nTEXMFCONFIG ~/.texlive/texmf-config\nTEXMFHOME ~/texmf\nTEXMFLOCA"
},
{
"path": "docs/Makefile",
"chars": 1108,
"preview": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line, and also\n# from the "
},
{
"path": "docs/html",
"chars": 0,
"preview": ""
},
{
"path": "docs/i18n/fr/LC_MESSAGES/index.po",
"chars": 4265,
"preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 031f65d9b7a2e83b265c23f1c4450271\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/pl"
},
{
"path": "docs/i18n/fr/LC_MESSAGES/installation.po",
"chars": 7825,
"preview": "msgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: 031f65d9b7a2e83b265c23f1c4450271\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/pl"
},
{
"path": "docs/i18n/gettext/changelog/0.1.0-changelog.pot",
"chars": 11207,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.1.1-changelog.pot",
"chars": 4753,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.10.0-changelog.pot",
"chars": 15998,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.11.0-changelog.pot",
"chars": 14355,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.12.0-changelog.pot",
"chars": 15005,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.13.0-changelog.pot",
"chars": 11050,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.13.1-changelog.pot",
"chars": 1475,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.14.0-changelog.pot",
"chars": 9722,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.15.0-changelog.pot",
"chars": 17336,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.15.1-changelog.pot",
"chars": 3444,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.15.2-changelog.pot",
"chars": 12961,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.16.0-changelog.pot",
"chars": 15659,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.2.0-changelog.pot",
"chars": 8286,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.3.0-changelog.pot",
"chars": 7003,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.4.0-changelog.pot",
"chars": 6665,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.5.0-changelog.pot",
"chars": 22832,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.6.0-changelog.pot",
"chars": 32165,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.7.0-changelog.pot",
"chars": 24395,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.8.0-changelog.pot",
"chars": 18591,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog/0.9.0-changelog.pot",
"chars": 18475,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/changelog.pot",
"chars": 155,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/conduct.pot",
"chars": 19458,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/admonitions.pot",
"chars": 2080,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/development.pot",
"chars": 14370,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/docstrings.pot",
"chars": 4306,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/examples.pot",
"chars": 4716,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/internationalization.pot",
"chars": 5801,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/performance.pot",
"chars": 2438,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/references.pot",
"chars": 7578,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/testing.pot",
"chars": 9582,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing/typings.pot",
"chars": 3350,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/contributing.pot",
"chars": 2465,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/examples.pot",
"chars": 1739,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/general.pot",
"chars": 9386,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/help.pot",
"chars": 7145,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/index.pot",
"chars": 256,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/installation.pot",
"chars": 10455,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/internals.pot",
"chars": 474,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/faq/opengl.pot",
"chars": 1217,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/guides/configuration.pot",
"chars": 14602,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/guides/deep_dive.pot",
"chars": 56432,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/guides/index.pot",
"chars": 262,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/guides/using_text.pot",
"chars": 11944,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/index.pot",
"chars": 5672,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation/docker.pot",
"chars": 2935,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation/jupyter.pot",
"chars": 3945,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation/linux.pot",
"chars": 4426,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation/macos.pot",
"chars": 3887,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation/troubleshooting.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/installation/versions.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/installation/windows.pot",
"chars": 6476,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/installation.pot",
"chars": 4526,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/internals.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/plugins.pot",
"chars": 3871,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.logger_utils.JSONFormatter.pot",
"chars": 2509,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.logger_utils.pot",
"chars": 3941,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.pot",
"chars": 1335,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.utils.ManimConfig.pot",
"chars": 37021,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.utils.ManimFrame.pot",
"chars": 822,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim._config.utils.pot",
"chars": 4850,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.animation.Animation.pot",
"chars": 18341,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.animation.Wait.pot",
"chars": 5370,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.animation.pot",
"chars": 2498,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.changing.AnimatedBoundary.pot",
"chars": 1737,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.changing.TracedPath.pot",
"chars": 2387,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.changing.pot",
"chars": 633,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.composition.AnimationGroup.pot",
"chars": 5761,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.composition.LaggedStart.pot",
"chars": 588,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.composition.LaggedStartMap.pot",
"chars": 600,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.composition.Succession.pot",
"chars": 3262,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.composition.pot",
"chars": 489,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.AddTextLetterByLetter.pot",
"chars": 1297,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.AddTextWordByWord.pot",
"chars": 790,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.Create.pot",
"chars": 1319,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.DrawBorderThenFill.pot",
"chars": 2445,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.ShowIncreasingSubsets.pot",
"chars": 1899,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.ShowPartial.pot",
"chars": 1125,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.ShowSubmobjectsOneByOne.pot",
"chars": 952,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.SpiralIn.pot",
"chars": 2301,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.Uncreate.pot",
"chars": 809,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.Unwrite.pot",
"chars": 1135,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.Write.pot",
"chars": 1899,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.creation.pot",
"chars": 1995,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.fading.FadeIn.pot",
"chars": 1818,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.fading.FadeOut.pot",
"chars": 2551,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.fading.pot",
"chars": 562,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.GrowArrow.pot",
"chars": 1498,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.GrowFromCenter.pot",
"chars": 1553,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.GrowFromEdge.pot",
"chars": 1710,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.GrowFromPoint.pot",
"chars": 1687,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.SpinInFromNothing.pot",
"chars": 1861,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.growing.pot",
"chars": 1140,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.ApplyWave.pot",
"chars": 2084,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.Circumscribe.pot",
"chars": 2667,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.Flash.pot",
"chars": 2477,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.FocusOn.pot",
"chars": 1955,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.Indicate.pot",
"chars": 2001,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.ShowCreationThenFadeOut.pot",
"chars": 938,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.ShowPassingFlash.pot",
"chars": 2370,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.ShowPassingFlashWithThinningStrokeWidth.pot",
"chars": 723,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.Wiggle.pot",
"chars": 2035,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.indication.pot",
"chars": 1558,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.ComplexHomotopy.pot",
"chars": 741,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.Homotopy.pot",
"chars": 2263,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.MoveAlongPath.pot",
"chars": 1680,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.PhaseFlow.pot",
"chars": 1450,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.SmoothedVectorizedHomotopy.pot",
"chars": 751,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.movement.pot",
"chars": 846,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.numbers.ChangeDecimalToValue.pot",
"chars": 610,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.numbers.ChangingDecimal.pot",
"chars": 1496,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.numbers.pot",
"chars": 452,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.rotation.Rotate.pot",
"chars": 1867,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.rotation.Rotating.pot",
"chars": 1440,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.rotation.pot",
"chars": 583,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.specialized.Broadcast.pot",
"chars": 2824,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.specialized.pot",
"chars": 334,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.speedmodifier.ChangeSpeed.pot",
"chars": 7521,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.speedmodifier.pot",
"chars": 515,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyComplexFunction.pot",
"chars": 835,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyFunction.pot",
"chars": 784,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyMatrix.pot",
"chars": 1825,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyMethod.pot",
"chars": 1876,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyPointwiseFunction.pot",
"chars": 1164,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ApplyPointwiseFunctionToCenter.pot",
"chars": 1476,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ClockwiseTransform.pot",
"chars": 1135,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.CounterclockwiseTransform.pot",
"chars": 1205,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.CyclicReplace.pot",
"chars": 784,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.FadeToColor.pot",
"chars": 1050,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.FadeTransform.pot",
"chars": 4784,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.FadeTransformPieces.pot",
"chars": 1712,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.MoveToTarget.pot",
"chars": 1506,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ReplacementTransform.pot",
"chars": 1767,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.Restore.pot",
"chars": 1203,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ScaleInPlace.pot",
"chars": 1069,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.ShrinkToCenter.pot",
"chars": 1084,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.Swap.pot",
"chars": 725,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.Transform.pot",
"chars": 6532,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.TransformAnimations.pot",
"chars": 1636,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.TransformFromCopy.pot",
"chars": 1761,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform.pot",
"chars": 2547,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform_matching_parts.TransformMatchingAbstractBase.pot",
"chars": 5293,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform_matching_parts.TransformMatchingShapes.pot",
"chars": 1653,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform_matching_parts.TransformMatchingTex.pot",
"chars": 1433,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.transform_matching_parts.pot",
"chars": 967,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.update.MaintainPositionRelativeTo.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.update.UpdateFromAlphaFunc.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.update.UpdateFromFunc.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.update.pot",
"chars": 1,
"preview": "\n"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.mobject_update_utils.pot",
"chars": 1140,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.pot",
"chars": 706,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.update.MaintainPositionRelativeTo.pot",
"chars": 1718,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.update.UpdateFromAlphaFunc.pot",
"chars": 1659,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.update.UpdateFromFunc.pot",
"chars": 1877,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.animation.updaters.update.pot",
"chars": 483,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.camera.camera.BackgroundColoredVMobjectDisplayer.pot",
"chars": 5893,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
},
{
"path": "docs/i18n/gettext/reference/manim.camera.camera.Camera.pot",
"chars": 36237,
"preview": "\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: Manim \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Co"
}
]
// ... and 1105 more files (download for full content)
About this extraction
This page contains the full source code of the ManimCommunity/manim GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1305 files (5.3 MB), approximately 1.5M tokens, and a symbol index with 4171 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.