mirror of
https://github.com/ManimCommunity/manim.git
synced 2026-06-22 10:01:47 +00:00
Refactored structure of documentation; added :doc:FAQ section <faq/index> (#2732)
* move tutorials -> tutorials_guide * change title in tutorials_guides * rename: a_deeper_look -> output_and_config * splitting Tutorials * reorder index (sidebar), move some top level sections elsewhere * rename some tutorials * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * replace recommonmark with rest for rendering md files * fixed broken references * fixed **all** warnings and errors during docbuild * faq: help, more structure for landing page * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix deprecation tests * prepare some sort of skeleton for installation faq * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * ensure that pip from poetry venv is used in pipeline * added myst-parser as dev dependency * remove fixed sphinx version from requirement.txt, don't re-install dependencies * move and improve versions and troubleshooting content to FAQ * resolve broken references * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * help blacken-docs * new: navigating the docs * make different versions question more prominent * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixed order of tutorials * added explicit references to building blocks and quickstart tutorial * docs -> doc * change a page-reference to a paragraph-reference * pypi manimlib, split answer regarding chocolatey failing * added a note on #beginner-resources Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
4129505003
commit
48747a74d9
38 changed files with 765 additions and 467 deletions
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
|
@ -57,7 +57,7 @@ jobs:
|
|||
|
||||
- name: Run doctests in rst files
|
||||
run: |
|
||||
cd docs && pip install -r requirements.txt && poetry run make doctest O=-tskip-manim
|
||||
cd docs && poetry run make doctest O=-tskip-manim
|
||||
|
||||
|
||||
test:
|
||||
|
|
|
|||
|
|
@ -9,6 +9,6 @@ examples.po
|
|||
reference.po
|
||||
tutorials.po
|
||||
tutorials/building_blocks.po
|
||||
tutorials/a_deeper_look.po
|
||||
tutorials/output_and_config.po
|
||||
tutorials/quickstart.po
|
||||
tutorials/configuration.po
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
sphinx==4.1.2
|
||||
furo
|
||||
recommonmark>=0.5.0
|
||||
myst-parser
|
||||
sphinx
|
||||
sphinx-copybutton
|
||||
sphinxext-opengraph
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ Documentation-related changes
|
|||
* :pr:`2415`: Removed instructions on using and installing Docker in README
|
||||
|
||||
|
||||
* :pr:`2414`: Made improvements to the :doc:`configuration` tutorial
|
||||
* :pr:`2414`: Made improvements to the :doc:`/guides/configuration` tutorial
|
||||
|
||||
|
||||
* :pr:`2423`: Changed recommendation to ``mactex-no-gui`` from ``mactex`` for macOS install
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ author = "The Manim Community Dev Team"
|
|||
# ones.
|
||||
extensions = [
|
||||
"sphinx.ext.autodoc",
|
||||
"recommonmark",
|
||||
"sphinx_copybutton",
|
||||
"sphinx.ext.napoleon",
|
||||
"sphinx.ext.autosummary",
|
||||
|
|
@ -47,6 +46,7 @@ extensions = [
|
|||
"sphinx.ext.graphviz",
|
||||
"sphinx.ext.inheritance_diagram",
|
||||
"sphinxcontrib.programoutput",
|
||||
"myst_parser",
|
||||
]
|
||||
|
||||
# Automatically generate stub pages when using the .. autosummary directive
|
||||
|
|
|
|||
|
|
@ -154,11 +154,6 @@ Develop your contribution
|
|||
Use the :mod:`manim directive for Sphinx <manim.utils.docbuild.manim_directive>` to add examples
|
||||
to the documentation!
|
||||
|
||||
.. autosummary::
|
||||
:toctree: ../reference
|
||||
|
||||
manim.utils.docbuild.manim_directive
|
||||
|
||||
As far as development on your local machine goes, these are the main steps you
|
||||
should follow.
|
||||
|
||||
|
|
@ -282,7 +277,7 @@ Further useful guidelines
|
|||
|
||||
|
||||
You can find examples for the ``docs`` in several places:
|
||||
the :doc:`Example Gallery <../examples>`, :doc:`Tutorials <../tutorials>`,
|
||||
the :doc:`Example Gallery <../examples>`, :doc:`Tutorials <../tutorials/index>`,
|
||||
and :doc:`Reference Classes <../reference>`.
|
||||
|
||||
In case you are contributing, please have a look at this flowchart:
|
||||
|
|
|
|||
197
docs/source/faq/general.md
Normal file
197
docs/source/faq/general.md
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
# FAQ: General Usage
|
||||
|
||||
## Why does Manim say that "there are no scenes inside that module"?
|
||||
|
||||
There are two main reasons why this error appears: if you have edited
|
||||
the file containing your `Scene` class and forgot to save it, or if you
|
||||
have accidentally passed the name of a wrong file to `manim`, this is
|
||||
a likely outcome. Check that you have spelled everything correctly.
|
||||
|
||||
Otherwise you are likely mixing up Manim versions. See {ref}`this FAQ answer <different-versions>`
|
||||
for an explanation regarding why there are different versions. Under the assumption
|
||||
that you are trying to use the `manim` executable from the terminal to run
|
||||
a scene that has been written for the community version (i.e., there is
|
||||
`from manim import *`, or more specifically `from manim import Scene`)
|
||||
|
||||
---
|
||||
|
||||
## No matter what code I put in my file, Manim only renders a black frame! Why?
|
||||
|
||||
If you are using the usual pattern to write a `Scene`, i.e.,
|
||||
```python
|
||||
class MyAwesomeScene(Scene):
|
||||
def construct(self):
|
||||
...
|
||||
# your animation code
|
||||
```
|
||||
then double check whether you have spelled `construct` correctly.
|
||||
If the method containing your code is not called `construct` (or
|
||||
if you are not calling a different, custom method from `construct`),
|
||||
Manim will not call your method and simply output a black frame.
|
||||
|
||||
---
|
||||
|
||||
## I have watched a video where a creator ran command X, but it does not work for me. Why?
|
||||
|
||||
The video you have been watching is likely outdated. If you want to follow
|
||||
along, you either need to use the same version used in the video, or
|
||||
modify the code (in many cases it is just a method having been renamed etc.)
|
||||
accordingly. Check the video description, in some cases creators point out
|
||||
whether changes need to be applied to the code shown in the video.
|
||||
|
||||
---
|
||||
|
||||
## When using `Tex` or `MathTex`, some letters are missing. How can I fix this?
|
||||
|
||||
It is possible that you have to (re)build some fonts used by LaTeX. For
|
||||
some distributions, you can do this manually by running
|
||||
```bash
|
||||
fmtutil -sys --all
|
||||
```
|
||||
We recommend consulting the documentation of your LaTeX distribution
|
||||
for more information.
|
||||
|
||||
---
|
||||
|
||||
## I want to translate some code from `manimgl` to `manim`, what do I do with `CONFIG` dictionaries?
|
||||
|
||||
The community maintained version has dropped the use of `CONFIG` dictionaries very
|
||||
early, with {doc}`version v0.2.0 </changelog/0.2.0-changelog>` released in
|
||||
January 2021.
|
||||
|
||||
Before that, Manim's classes basically processed `CONFIG` dictionaries
|
||||
by mimicking inheritance (to properly process `CONFIG` dictionaries set
|
||||
by parent classes) and then assigning all of the key-value-pairs in the
|
||||
dictionary as attributes of the corresponding object.
|
||||
|
||||
In situations where there is not much inheritance going on,
|
||||
or for any custom setting, you should set these attributes yourself.
|
||||
For example, for an old-style `Scene` with custom attributes like
|
||||
|
||||
```python
|
||||
class OldStyle(Scene):
|
||||
CONFIG = {"a": 1, "b": 2}
|
||||
```
|
||||
|
||||
should be written as
|
||||
|
||||
```python
|
||||
class NewStyle(Scene):
|
||||
a = 1
|
||||
b = 2
|
||||
```
|
||||
|
||||
In situations where values should be properly inherited, the arguments
|
||||
should be added to the initialization function of the class. An old-style
|
||||
mobject `Thing` could look like
|
||||
|
||||
```python
|
||||
class Thing(VMobject):
|
||||
CONFIG = {
|
||||
"stroke_color": RED,
|
||||
"fill_opacity": 0.7,
|
||||
"my_awesome_argument": 42,
|
||||
}
|
||||
```
|
||||
|
||||
where `stroke_color` and `fill_opacity` are arguments that concern the
|
||||
parent class of `Thing`, and `my_awesome_argument` is a custom argument
|
||||
that only concerns `Thing`. A version without `CONFIG` could look like this:
|
||||
|
||||
```python
|
||||
class Thing(VMobject):
|
||||
def __init__(
|
||||
self, stroke_color=RED, fill_opacity=0.7, my_awesome_argument=42, **kwargs
|
||||
):
|
||||
self.my_awesome_argument = my_awesome_argument
|
||||
super().__init__(stroke_color=stroke_color, fill_opacity=fill_opacity, **kwargs)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## My installation does not support converting PDF to SVG, help?
|
||||
|
||||
This is an issue with `dvisvgm`, the tool shipped with LaTeX that
|
||||
transforms LaTeX output to a `.svg` file that
|
||||
Manim can parse.
|
||||
|
||||
First, make sure your ``dvisvgm`` version is at least 2.4 by
|
||||
checking the output of
|
||||
|
||||
```bash
|
||||
dvisvgm --version
|
||||
```
|
||||
|
||||
If you do not know how to update `dvisvgm`, please refer to your
|
||||
LaTeX distributions documentation (or the documentation of your
|
||||
operating system, if `dvisvgm` was installed as a system package).
|
||||
|
||||
Second, check whether your ``dvisvgm`` supports PostScript specials. This is
|
||||
needed to convert from PDF to SVG. Run:
|
||||
|
||||
```bash
|
||||
dvisvgm -l
|
||||
```
|
||||
|
||||
If the output to this command does **not** contain `ps dvips PostScript specials`,
|
||||
this is a bad sign. In this case, run
|
||||
|
||||
```bash
|
||||
dvisvgm -h
|
||||
```
|
||||
|
||||
If the output does **not** contain `--libgs=filename`, this means your
|
||||
`dvisvgm` does not currently support PostScript. You must get another binary.
|
||||
|
||||
If, however, `--libgs=filename` appears in the help, that means that your
|
||||
`dvisvgm` needs the Ghostscript library to support PostScript. Search for
|
||||
`libgs.so` (on Linux, probably in `/usr/local/lib` or `/usr/lib`) or
|
||||
`gsdll32.dll` (on 32-bit Windows, probably in `C:\windows\system32`) or
|
||||
`gsdll64.dll` (on 64-bit Windows, also probably in `C:\windows\system32`)
|
||||
or `libgsl.dylib` (on MacOS, probably in `/usr/local/lib` or
|
||||
`/opt/local/lib`). Please look carefully, as the file might be located
|
||||
elsewhere, e.g. in the directory where Ghostscript is installed.
|
||||
|
||||
When you have found the library, try (on MacOS or Linux)
|
||||
|
||||
```bash
|
||||
export LIBGS=<path to your library including the file name>
|
||||
dvisvgm -l
|
||||
```
|
||||
|
||||
or (on Windows)
|
||||
|
||||
```bat
|
||||
set LIBGS=<path to your library including the file name>
|
||||
dvisvgm -l
|
||||
```
|
||||
|
||||
You should now see `ps dvips PostScript specials` in the output. Refer to
|
||||
your operating system's documentation to find out how you can set or export the
|
||||
environment variable ``LIBGS`` automatically whenever you open a shell.
|
||||
|
||||
As a last check, you can run
|
||||
|
||||
```bash
|
||||
dvisvgm -V1
|
||||
```
|
||||
|
||||
(while still having `LIBGS` set to the correct path, of course.) If `dvisvgm`
|
||||
can find your Ghostscript installation, it will be shown in the output together
|
||||
with the version number.
|
||||
|
||||
If you do not have the necessary library on your system, please refer to your
|
||||
operating system's documentation to find out where you can get it and how you
|
||||
have to install it.
|
||||
|
||||
If you are unable to solve your problem, check out the
|
||||
[dvisvgm FAQ](https://dvisvgm.de/FAQ/).
|
||||
|
||||
---
|
||||
|
||||
## Where can I find more resources for learning Manim?
|
||||
|
||||
In our [Discord server](https://manim.community/discord), we have the community maintained
|
||||
`#beginner-resources` channel in which links to helpful learning resources are collected.
|
||||
You are welcome to join our Discord and take a look yourself! If you have found some
|
||||
guides or tutorials yourself that are not on our list yet, feel free to add them!
|
||||
105
docs/source/faq/help.md
Normal file
105
docs/source/faq/help.md
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
# FAQ: Getting Help
|
||||
|
||||
## How do I animate X? Why do I get error Y? Can someone help me?
|
||||
|
||||
Before asking the community, please make sure that the issue you are having
|
||||
is not already discussed in our {doc}`FAQ section </faq/index>` sufficiently
|
||||
well so that you can resolve the problem yourself. You can also try to
|
||||
use your favorite search engine, if you are lucky you might find a blog post,
|
||||
a question on [StackOverflow](https://stackoverflow.com/questions/tagged/manim),
|
||||
or a post in the [r/manim subreddit](https://reddit.com/r/manim).
|
||||
|
||||
If this is not the case, please take a moment to properly prepare your question:
|
||||
the better you manage to explain what exactly it is you are struggling with,
|
||||
the more efficient people will be able to help you. Regardless of the platform
|
||||
you choose in the next step, StackOverflow has a good guide on
|
||||
[asking good questions](https://stackoverflow.com/help/how-to-ask).
|
||||
|
||||
As soon as you have a good idea of what exactly you want to ask, pick one of the
|
||||
following communication channels:
|
||||
|
||||
- The community is most active [in our Discord server](https://manim.community/discord/).
|
||||
Click the link to join, then pick one of the `#manim-help` channels in the sidebar,
|
||||
and post your question there. If you are comfortable with using Discord, try to search
|
||||
for your problem using the search function of our server; perhaps people have been
|
||||
talking about it before!
|
||||
- We are also monitoring questions on
|
||||
[StackOverflow](https://stackoverflow.com/questions/tagged/manim) that are tagged
|
||||
with `manim`.
|
||||
- Many people are also active in our [r/manim subreddit](https://reddit.com/r/manim),
|
||||
feel free to post there if you are an avid Redditor -- but be aware that Discord
|
||||
or StackOverflow might be better choices.
|
||||
- And finally, you can also start a new [discussion on GitHub](https://github.com/ManimCommunity/manim/discussions)
|
||||
if you dislike all other options.
|
||||
|
||||
In all of these channels, please make sure to abide by Manim's
|
||||
{doc}`Code of Conduct </conduct>` -- in short, be *excellent* to one another:
|
||||
be friendly and patient, considerate, and respectful.
|
||||
|
||||
---
|
||||
|
||||
## What should I do if nobody answers my question?
|
||||
|
||||
Try and see whether your question can be improved: did you include all relevant
|
||||
information (in case of errors: the full stack trace, the code that you were
|
||||
rendering, and the command you used to run Manim?). In case you used a very long
|
||||
example, is it possible to construct a more minimal version that has the same
|
||||
(faulty) behavior?
|
||||
|
||||
If you posted in one of our help channels on Discord and your question got buried,
|
||||
you are allowed to ping the `@Manim Helper` role to bring it to the attention of
|
||||
the volunteers who are willing to take a look. Please refrain from pinging the role
|
||||
immediately when asking your question for the first time, this is considered impolite.
|
||||
|
||||
You can also try to post your question to a different channel if you feel that you
|
||||
are not having any success with your initial choice -- but please do not spam your
|
||||
question in all of our communication channels (and in particular for Discord:
|
||||
please don't use multiple help channels at once).
|
||||
|
||||
In the end, it is as for most open-source projects: our community members are
|
||||
volunteers. If you do not receive a quick answer to your question, it may be
|
||||
because nobody knows the answer, or because your question is not clear enough,
|
||||
or it could be that everyone who can help you with your problem is busy doing
|
||||
other things.
|
||||
|
||||
---
|
||||
|
||||
## The library does not behave as documented, or something broke in a new release. What should I do?
|
||||
|
||||
Sounds like you have found a bug. One of the best ways of contributing to the
|
||||
development of Manim is by reporting it!
|
||||
|
||||
Check our list of known issues and feature requests
|
||||
[in our GitHub repository](https://github.com/ManimCommunity/manim/issues). If the
|
||||
problem you have found is not listed there yet (use the search function; also check
|
||||
whether there is a corresponding closed issue, it is possible that your problem
|
||||
has already been resolved and will be fixed with the next release), please consider
|
||||
the following steps to submit a new issue.
|
||||
|
||||
```{note}
|
||||
If you are unsure whether or not you should file a new issue for some odd behavior
|
||||
that you found, feel free to ask the community developers, preferably in one of
|
||||
our `#manim-dev` channels in [our Discord](https://manim.community/discord/).
|
||||
```
|
||||
|
||||
1. Make sure you are running the latest released version of Manim, your problem
|
||||
might otherwise already be fixed in a more recent version. Check the
|
||||
{doc}`/changelog` for a full list of changes between Manim releases.
|
||||
|
||||
2. Choose the correct category for your report when
|
||||
[creating a new issue](https://github.com/ManimCommunity/manim/issues/new/choose).
|
||||
We have dedicated issue templates for *bug reports*, *feature requests*,
|
||||
*installation issues*, and *suggestions*. If your report falls into one of these
|
||||
categories, read the issue template carefully! Instructions are given in the
|
||||
`<!-- ... -->` sections of the text field.
|
||||
|
||||
3. For bug reports: prepare a minimal example that can be used to illustrate the
|
||||
issue. Examples with hundreds of lines are very inefficient and tedious to debug.
|
||||
Your problem needs to be reproducible for others, so please make sure to prepare
|
||||
a suitable example.
|
||||
|
||||
4. This is mentioned in the bug report template as well, but it is very important:
|
||||
if you report that some code raises an error, make sure to include the full
|
||||
terminal output, from the command you used to run the library up to and including
|
||||
the last line with the error message. Read carefully: if the message mentions
|
||||
that there is another relevant log file, include this other file as well!
|
||||
9
docs/source/faq/index.rst
Normal file
9
docs/source/faq/index.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
Frequently Asked Questions
|
||||
==========================
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
:glob:
|
||||
|
||||
*
|
||||
170
docs/source/faq/installation.md
Normal file
170
docs/source/faq/installation.md
Normal file
|
|
@ -0,0 +1,170 @@
|
|||
# FAQ: Installation
|
||||
|
||||
(different-versions)=
|
||||
## Why are there different versions of Manim?
|
||||
|
||||
Manim was originally created by Grant Sanderson as a personal project and for use
|
||||
in his YouTube channel,
|
||||
[3Blue1Brown](https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw).
|
||||
As his channel gained popularity, many grew to like the style of his animations and
|
||||
wanted to use manim for their own projects. However, as manim was only intended for
|
||||
personal use, it was very difficult for other users to install and use it.
|
||||
|
||||
In late 2019, Grant started working on faster OpenGL rendering in a new branch,
|
||||
known as the `shaders` branch. In mid-2020, a group of developers forked it into what is
|
||||
now the community edition; this is the version documented on this website.
|
||||
In early 2021, Grant merged the shaders branch back into master, making it the default branch in his repository -- and this is what `manimgl` is.
|
||||
The old version, before merging the `shaders` branch is sometimes referred to as
|
||||
`ManimCairo` and is, at this point, only useful for one singular purpose: rendering
|
||||
Grant's old videos locally on your machine. It is still available in his GitHub
|
||||
repository in form of the `cairo-backend` branch.
|
||||
|
||||
To summarize:
|
||||
- [**Manim**, or **ManimCE**](https://manim.community) refers to the community
|
||||
maintained version of the library. This is the version documented on this website;
|
||||
the package name on PyPI is [`manim`](https://pypi.org/project/manim/).
|
||||
- [ManimGL](https://github.com/3b1b/manim) is the latest released version of the
|
||||
version of the library developed by Grant "3b1b" Sanderson. It has more experimental
|
||||
features and breaking changes between versions are not documented. Check out
|
||||
its documentation [here](https://3b1b.github.io/manim/index.html); on PyPI the
|
||||
package name is [`manimgl`](https://pypi.org/project/manimgl/).
|
||||
- [ManimCairo](https://github.com/3b1b/manim/tree/cairo-backend) is the name that
|
||||
is sometimes used for the old, pre-OpenGL version of `manimgl`. The latest version
|
||||
of it is available [on PyPI as `manimlib`](https://pypi.org/project/manimgl/),
|
||||
but note that if you intend to use it to compile some old project of Grant,
|
||||
you will likely have to install the exact version from the time the project
|
||||
was created from source.
|
||||
|
||||
---
|
||||
|
||||
## Which version should I use?
|
||||
|
||||
We recommend the community maintained version especially for beginners. It has been
|
||||
developed to be more stable, better tested and documented (!), and quicker to respond
|
||||
to community contributions. It is also perfectly reasonable to start learning with the
|
||||
community maintained version and then switch to a different version later on.
|
||||
|
||||
If you do not care so much about documentation or stability, and would like to use
|
||||
the exact same version that Grant is using, then use ManimGL.
|
||||
|
||||
And as mentioned above, ManimCairo should only be used for (re)rendering old
|
||||
3Blue1Brown projects (basically 2019 and before).
|
||||
|
||||
---
|
||||
|
||||
## What are the differences between Manim, ManimGL, ManimCairo? Can I tell for which version a scene was written for?
|
||||
|
||||
You can! The thing that usually gives it away is the `import` statement
|
||||
at the top of the file; depending on how the code imports Manim you can tell
|
||||
for which version of the code it was written for:
|
||||
|
||||
- If the code imports from `manim` (i.e., `from manim import *`, `import manim as mn`, etc.),
|
||||
then the code you are reading is supposed to be run with the community maintained version.
|
||||
- If the import reads `import manimlib` (or `from manimlib import *`), you are likely
|
||||
reading a file to be rendered with ManimGL.
|
||||
- And if the import reads `from manimlib.imports import *`, or perhaps even
|
||||
`from big_ol_pile_of_manim_imports import *` you are reading a snippet that is
|
||||
supposed to be rendered with an early, or very early version of ManimCairo, respectively.
|
||||
|
||||
---
|
||||
|
||||
## How do I know which version of Manim I have installed?
|
||||
|
||||
Assuming you can run `manim` in your terminal and there is some output, check the
|
||||
first line of the text being produced. If you are using the community maintained
|
||||
version, the first line of any output will be `Manim Community <version number>`.
|
||||
If it does not say that, you are likely using ManimGL.
|
||||
|
||||
You can also check the list of packages you have installed: if typing `python`
|
||||
in your terminal spawns the interpreter that corresponds to the Python
|
||||
installation you use (might also be `py`, or `python3`, depending on your
|
||||
operating system), running `python -m pip list` will print a list of all
|
||||
installed packages. Check whether `manim` or `manimgl` appear in that list.
|
||||
|
||||
Similarly, you can use `python -m pip install <package name>` and
|
||||
`python -m pip uninstall <package name>` to install and uninstall
|
||||
packages from that list, respectively.
|
||||
|
||||
---
|
||||
|
||||
## I am following the video guide X to install Manim, but some step fails. What do I do?
|
||||
|
||||
It is only natural that there are many video guides on installing Manim
|
||||
out there, given that Manim is a library used for creating videos. Unfortunately
|
||||
however, (YouTube) videos can't be updated easily (without uploading a new one, that is)
|
||||
when some step in the installation process changes, and so there are many
|
||||
**severely outdated** resources out there.
|
||||
|
||||
This is why we strongly recommend following our
|
||||
{doc}`written installation guide </installation>` to guide you through the process.
|
||||
In case you prefer using a video guide regardless, please check whether the
|
||||
creator whose guide you have been watching has made a more recent version available,
|
||||
and otherwise please contact them directly. Asking for help in the community will
|
||||
likely lead to being suggested to follow our written guide.
|
||||
|
||||
---
|
||||
|
||||
## Why does ManimPango fail to install when running `pip install manim`?
|
||||
|
||||
This most likely means that pip was not able to use our pre-built wheels
|
||||
of the `manimpango` dependency. Let us know (via
|
||||
[Discord](https://www.manim.community/discord/) or by opening a
|
||||
[new issue on GitHub](https://github.com/ManimCommunity/ManimPango/issues/new))
|
||||
which architecture you would like to see supported, and we'll see what we
|
||||
can do about it.
|
||||
|
||||
To fix errors when installing `manimpango`, you need to make sure you
|
||||
have all the necessary build requirements. Check out the detailed
|
||||
instructions given in [the BUILDING section](https://github.com/ManimCommunity/ManimPango#BUILDING)
|
||||
of [ManimPango's README](https://github.com/ManimCommunity/ManimPango).
|
||||
|
||||
---
|
||||
|
||||
## I am using Windows and get the error `X is not recognized as an internal or external command, operable program or batch file`
|
||||
|
||||
Regardless of whether `X` says `python` or `manim`, this means that the executable you
|
||||
are trying to run is not located in one of the directories your system is looking
|
||||
for them (specified by the `PATH` variable). Take a look at the instructions
|
||||
{doc}`in the installation guide for Windows </installation/windows>`, or
|
||||
[this StackExchange answer](https://superuser.com/questions/143119/how-do-i-add-python-to-the-windows-path/143121#143121)
|
||||
to get help with editing the `PATH` variable manually.
|
||||
|
||||
If `python` is recognized but not `manim` or `pip`, you can try running
|
||||
commands by prepending `python -m`. That is, `manim` becomes `python -m manim`,
|
||||
and `pip` becomes `python -m pip`.
|
||||
|
||||
---
|
||||
|
||||
## I have tried using Chocolatey (`choco install manimce`) to install Manim, but it failed!
|
||||
|
||||
Make sure that you were running the command with administrator permissions,
|
||||
otherwise there can be problems. If this is not the issue, read Chocolatey's
|
||||
output carefully, it should mention a `.log` file containing information why
|
||||
the process failed.
|
||||
|
||||
You are welcome to take this file (and any other input you feel might be
|
||||
relevant) and submit it to Manim's community to ask for help with
|
||||
your problem. See the {doc}`FAQ on getting help </faq/help>` for instructions.
|
||||
|
||||
---
|
||||
|
||||
## On Windows, when typing `python` or `python3` the Windows store is opened, can I fix this?
|
||||
|
||||
Yes: you can remove these aliases with these steps:
|
||||
|
||||
1. Go to the Windows Setting.
|
||||
2. Under *Apps and Features* you will find application execution aliases.
|
||||
3. Within this menu, disable the alias(es) that are causing the issue
|
||||
(`python` and/or `python3`).
|
||||
|
||||
---
|
||||
|
||||
## I am using Anaconda and get an `ImportError` mentioning that some Symbol is not found.
|
||||
|
||||
This is because Anaconda environments come with their own preinstalled
|
||||
version of `cairo` which is not compatible with the version of `pycairo`
|
||||
required by Manim. Usually it can be fixed by running
|
||||
|
||||
```bash
|
||||
conda install -c conda-forge pycairo
|
||||
```
|
||||
|
|
@ -1,8 +1,7 @@
|
|||
Internal structure
|
||||
==================
|
||||
# Where can I learn more about Manim's internal structure?
|
||||
|
||||
Efforts to document the internal structure of Manim is ongoing on our
|
||||
`wiki <https://github.com/ManimCommunity/manim/wiki/Developer-documentation-(WIP)>`_.
|
||||
[wiki](https://github.com/ManimCommunity/manim/wiki/Developer-documentation-(WIP)).
|
||||
|
||||
Keep in mind that since this is a work in progress, the information you find may be
|
||||
incomplete, outdated or even wrong. Still, it should serve as a good starting point.
|
||||
9
docs/source/guides/index.rst
Normal file
9
docs/source/guides/index.rst
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
Thematic Guides
|
||||
===============
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
:glob:
|
||||
|
||||
*
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
##########
|
||||
Using Text
|
||||
##########
|
||||
###########################
|
||||
Rendering Text and Formulas
|
||||
###########################
|
||||
|
||||
There are two different ways by which you can render **Text** in videos:
|
||||
|
||||
|
|
@ -3,8 +3,8 @@
|
|||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Manim Community Overview
|
||||
========================
|
||||
Manim Community Edition
|
||||
=======================
|
||||
|
||||
Animating technical concepts is traditionally pretty tedious since it can be
|
||||
difficult to make the animations precise enough to convey them accurately.
|
||||
|
|
@ -13,23 +13,96 @@ making it convenient to specify exactly how each one should run. Take a look
|
|||
at the :doc:`Example Gallery <../examples>` for some inspiration on how to
|
||||
create beautiful images and videos with Manim.
|
||||
|
||||
First Steps
|
||||
-----------
|
||||
|
||||
Are you new to Manim and are looking for where to get started? Then you are
|
||||
in the right place!
|
||||
|
||||
.. note::
|
||||
|
||||
Please be aware that there are different, incompatible versions
|
||||
of Manim available. Check our :ref:`installation FAQ <different-versions>`
|
||||
to learn more!
|
||||
|
||||
- The :doc:`Installation <installation>` section has the latest and
|
||||
up-to-date installation instructions for Windows, MacOS, and Linux.
|
||||
You can also find information on Manim's docker images and (online)
|
||||
notebook environments there.
|
||||
- Want to try the library before installing it? Take a look at our
|
||||
interactive online playground at https://try.manim.community in form
|
||||
of a Jupyter notebook.
|
||||
- In our :doc:`Tutorials <tutorials/index>` section you will find a
|
||||
collection of resources that will teach you how to use Manim. In particular,
|
||||
the :doc:`tutorials/quickstart` tutorial teaches you Manim's basics,
|
||||
and in :doc:`tutorials/building_blocks` the classes used to compose
|
||||
your animations are described in more detail.
|
||||
|
||||
|
||||
Finding Help
|
||||
------------
|
||||
|
||||
Are you struggling with installing or using Manim? Don't worry, we've all been
|
||||
there. Here are some good resources to help you out:
|
||||
|
||||
- Perhaps your problem is one that occurs frequently, then chances are it is
|
||||
addressed in our :doc:`collection of FAQs <faq/index>`.
|
||||
- If you are looking for information on some specific class, look for it
|
||||
in the :doc:`reference manual <reference>` and/or use the search feature
|
||||
of the documentation.
|
||||
- Still no luck? Then you are welcome to ask the community for help, together
|
||||
we usually manage to find a solution for your problem! Consult the
|
||||
:doc:`FAQ page on getting help <faq/help>` for instructions.
|
||||
|
||||
|
||||
Navigating the Documentation
|
||||
----------------------------
|
||||
|
||||
Here are some short summaries for all of the sections in this documentation:
|
||||
|
||||
- The :doc:`Example Gallery </examples>` is a collection of examples (rendered videos
|
||||
and images together with the code they were generated from) that show a few different,
|
||||
simple things that you can do with Manim.
|
||||
- The :doc:`Installation </installation>` section has information on installing Manim.
|
||||
- In :doc:`Tutorials & Guides </tutorials_guides>` you can find learning resources: proper
|
||||
tutorials that guide you through the process of creating a video are in
|
||||
the :doc:`Tutorial </tutorials/index>` section; guides on specific topics are in the
|
||||
:doc:`Guides </guides/index>` section, and the answers to frequently asked questions
|
||||
can be found in the :doc:`FAQ </faq/index>` section.
|
||||
- The :doc:`Reference Manual </reference>` contains a comprehensive list of all of Manim's
|
||||
(documented) modules, classes, and functions. If you are somewhat familiar with Manim's
|
||||
module structure feel free to browse the manual directly. If you are searching for
|
||||
something specific, feel free to use the documentation's search feature in the sidebar.
|
||||
Many classes and methods come with their own illustrated examples too!
|
||||
- The :doc:`Plugins </plugins>` page documents how to install, write, and distribute
|
||||
plugins (that is, separate Python packages that extend the feature set of the core library).
|
||||
- Changes between versions are documented in our :doc:`Changelog </changelog>`.
|
||||
- If you are looking into contributing to the development of Manim, you can find information
|
||||
on how to get involved in our :doc:`Contributing </contributing>` section.
|
||||
- And finally, the :doc:`Code of Conduct </conduct>` page has a formal description of
|
||||
the rules you should abide by when interacting within our community.
|
||||
|
||||
Sharing Your Work
|
||||
-----------------
|
||||
|
||||
We'd love to hear from you and see your manimations
|
||||
`on Twitter <https://twitter.com/manim_community>`_, `Reddit <https://www.reddit.com/r/manim/>`_,
|
||||
or `Discord <https://www.manim.community/discord/>`_. If you're using 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>`_.
|
||||
|
||||
Index
|
||||
-----
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
installation
|
||||
tutorials
|
||||
examples
|
||||
changelog
|
||||
installation
|
||||
tutorials_guides
|
||||
reference
|
||||
plugins
|
||||
reporting_bugs
|
||||
internals
|
||||
changelog
|
||||
contributing
|
||||
conduct
|
||||
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ Python, or via Docker).
|
|||
|
||||
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
|
||||
Find out more about the :ref:`differences between Manim
|
||||
versions <different-versions>` if you are unsure which
|
||||
version you should install.
|
||||
|
||||
#. :ref:`Installing Manim to your system's Python <local-installation>`
|
||||
|
|
@ -54,18 +54,14 @@ Manim requires Python version ``3.7`` or above to run.
|
|||
installation/windows
|
||||
installation/macos
|
||||
installation/linux
|
||||
installation/troubleshooting
|
||||
|
||||
Once Manim is installed locally, you can proceed to our
|
||||
:doc:`quickstart guide <tutorials/quickstart>` which walks you
|
||||
through rendering a first simple scene.
|
||||
|
||||
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/>`__.
|
||||
problems: consult our :doc:`FAQ section </faq/index>` for help
|
||||
(including instructions for how to ask Manim's community for help).
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,299 +0,0 @@
|
|||
Troubleshooting
|
||||
===============
|
||||
|
||||
Version incompatibility
|
||||
***********************
|
||||
|
||||
Confusion and conflict between versions are by far the most common reasons
|
||||
for installation failures. Some errors resulting from this are:
|
||||
|
||||
- ``There are no scenes in that module``
|
||||
- ``ModuleNotFoundError: No module named 'manim'``
|
||||
- ``ModuleNotFoundError: No module named 'manimlib'``
|
||||
|
||||
Some reasons that conflict may occur are:
|
||||
|
||||
- You followed any tutorial created before October 2020 (because the community edition did not exist before then)
|
||||
- You cloned a repository on GitHub (installation of the community version for normal use does not require the cloning of any repository)
|
||||
- Different import statements (explained below)
|
||||
- You used documentation for multiple versions (such as the readme for 3b1b/manim and this documentation)
|
||||
|
||||
.. note::
|
||||
As this is the documentation for the community version, we can
|
||||
only help with the installation of this library. If you would like to
|
||||
install other versions of manim, please refer to their documentation.
|
||||
|
||||
Identifying files written for a different version of manim
|
||||
----------------------------------------------------------
|
||||
|
||||
There are some distinctive features of different versions of manim that
|
||||
can help in identifying what version of manim files are written for:
|
||||
|
||||
+--------------+-------------------------+----------------------------+-----------------------------------------+
|
||||
| Feature | ManimCE (this version) | ManimGL | ManimCairo |
|
||||
+==============+=========================+============================+=========================================+
|
||||
| Import | ``from manim import *`` | ``from manimlib import *`` | ``from manimlib.imports import *`` |
|
||||
| statement | | | |
|
||||
+--------------+-------------------------+----------------------------+-----------------------------------------+
|
||||
|
||||
If you are a beginner, you should only attempt to run files written for
|
||||
your version. Files written for a different version of manim will
|
||||
generally not work without some modification.
|
||||
|
||||
Identifying the version you are running
|
||||
---------------------------------------
|
||||
|
||||
The community edition of manim should always state `Manim Community <version_number>`
|
||||
as its first line of any command you run.
|
||||
|
||||
Identifying and removing conflicting versions of manim
|
||||
------------------------------------------------------
|
||||
|
||||
Within the system or environment you are using to run manim, run the
|
||||
following command in the terminal:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip list
|
||||
|
||||
The correct package for the community edition is simply ``manim``. If
|
||||
you do not see this package listed, please refer back to our
|
||||
installation guide to install it. If you see ``manimlib`` or ``manimce``
|
||||
(actually an old version of the community edition), you should remove
|
||||
them with:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip uninstall <package>
|
||||
|
||||
|
||||
If you cloned manim from GitHub, you should either remove it
|
||||
or run manim outside that folder.
|
||||
|
||||
Other errors
|
||||
************
|
||||
|
||||
``pip install manim`` fails when installing manimpango?
|
||||
-------------------------------------------------------
|
||||
This most likely means that pip was not able to use our pre-built wheels
|
||||
of ``manimpango``. Let us know (via our `Discord <https://www.manim.community/discord/>`_
|
||||
or by opening a
|
||||
`new issue on GitHub <https://github.com/ManimCommunity/ManimPango/issues/new>`_)
|
||||
which architecture you would like to see supported, and we'll see what we
|
||||
can do about it.
|
||||
|
||||
To fix errors when installing ``manimpango``, you need to make sure you
|
||||
have all the necessary build requirements. Check out the detailed
|
||||
instructions given in
|
||||
`the BUILDING section <https://github.com/ManimCommunity/ManimPango#BUILDING>`_
|
||||
of the corresponding `GitHub repository <https://github.com/ManimCommunity/ManimPango>`_.
|
||||
|
||||
|
||||
(Windows) OSError: dlopen() failed to load a library: pango
|
||||
-----------------------------------------------------------
|
||||
|
||||
This should be fixed in Manim's latest version, update
|
||||
using ``pip install --upgrade manim``.
|
||||
|
||||
|
||||
|
||||
Some letters are missing from Text/Tex output
|
||||
---------------------------------------------
|
||||
|
||||
If you have recently installed TeX you may need to build the fonts it
|
||||
uses. This can be done by running:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
fmtutil -sys --all
|
||||
|
||||
|
||||
.. _dvisvgm-troubleshoot:
|
||||
|
||||
Installation does not support converting PDF to SVG
|
||||
---------------------------------------------------
|
||||
|
||||
First, make sure your ``dvisvgm`` version is at least 2.4:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dvisvgm --version
|
||||
|
||||
|
||||
If you do not know how to update ``dvisvgm``, please refer to your operating system's documentation.
|
||||
|
||||
Second, check whether your ``dvisvgm`` supports PostScript specials. This is
|
||||
needed to convert from PDF to SVG.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dvisvgm -l
|
||||
|
||||
|
||||
If the output to this command does **not** contain ``ps dvips PostScript specials``,
|
||||
this is a bad sign. In this case, run
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dvisvgm -h
|
||||
|
||||
|
||||
If the output does **not** contain ``--libgs=filename``, this means your
|
||||
``dvisvgm`` does not currently support PostScript. You must get another binary.
|
||||
|
||||
If, however, ``--libgs=filename`` appears in the help, that means that your
|
||||
``dvisvgm`` needs the Ghostscript library to support PostScript. Search for
|
||||
``libgs.so`` (on Linux, probably in ``/usr/local/lib`` or ``/usr/lib``) or
|
||||
``gsdll32.dll`` (on 32-bit Windows, probably in ``C:\windows\system32``) or
|
||||
``gsdll64.dll`` (on 64-bit Windows, probably in ``c:\windows\system32`` -- yes
|
||||
32) or ``libgsl.dylib`` (on Mac OS, probably in ``/usr/local/lib`` or
|
||||
``/opt/local/lib``). Please look carefully, as the file might be located
|
||||
elsewhere, e.g. in the directory where Ghostscript is installed.
|
||||
|
||||
When you have found the library, try (on Mac OS or Linux)
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
export LIBGS=<path to your library including the file name>
|
||||
dvisvgm -l
|
||||
|
||||
or (on Windows)
|
||||
|
||||
.. code-block:: bat
|
||||
|
||||
set LIBGS=<path to your library including the file name>
|
||||
dvisvgm -l
|
||||
|
||||
|
||||
You should now see ``ps dvips PostScript specials`` in the output. Refer to
|
||||
your operating system's documentation to find out how you can set or export the
|
||||
environment variable ``LIBGS`` automatically whenever you open a shell.
|
||||
|
||||
As a last check, you can run
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
dvisvgm -V1
|
||||
|
||||
(while still having ``LIBGS`` set to the correct path, of course.) If ``dvisvgm``
|
||||
can find your Ghostscript installation, it will be shown in the output together
|
||||
with the version number.
|
||||
|
||||
If you do not have the necessary library on your system, please refer to your
|
||||
operating system's documentation to find out where you can get it and how you
|
||||
have to install it.
|
||||
|
||||
If you are unable to solve your problem, check out the `dvisvgm FAQ <https://dvisvgm.de/FAQ/>`_.
|
||||
|
||||
(Windows) ``Python is not recognized as an internal or external command, operable program or batch file.``
|
||||
----------------------------------------------------------------------------------------------------------
|
||||
|
||||
To fix this, you need to add the Python executable to your ``PATH`` environment variable.
|
||||
Follow the steps in `this StackExchange answer <https://superuser.com/questions/143119/how-do-i-add-python-to-the-windows-path/143121#143121>`__.
|
||||
|
||||
``choco install manimce`` failed
|
||||
--------------------------------
|
||||
|
||||
If ``choco install manimce`` failed,
|
||||
it is likely because Python was not added to your ``PATH`` variable properly.
|
||||
Try running the following commands in your terminal:
|
||||
|
||||
1. ``py --version``
|
||||
2. ``python --version``
|
||||
3. ``py3 --version``
|
||||
4. ``python3 --version``
|
||||
|
||||
Minimally, ``py --version`` and ``python --version`` should return a version.
|
||||
If none of these commands are recognized,
|
||||
this means that Python was installed on your system, but was not added to PATH.
|
||||
See above for directions to add it to your PATH variable.
|
||||
|
||||
If any of these commands open the Windows store,
|
||||
this is likely interfering with the process.
|
||||
See below to fix aliases.
|
||||
|
||||
(Windows) Fix Aliases
|
||||
---------------------
|
||||
|
||||
1. Go to the Windows Settings.
|
||||
2. Under Apps and Features, there are application execution aliases.
|
||||
3. Within this menu disable the alias(es) that are causing the issue (``python`` and/or ``python3``).
|
||||
|
||||
``IndexError: List index out of range``
|
||||
---------------------------------------
|
||||
|
||||
Did you install LaTeX using MiKTeX? If so, open the MiKTeX console,
|
||||
install the ``cm-super`` package, then delete the ``media`` directory and
|
||||
try to render the scene again.
|
||||
|
||||
Config
|
||||
------
|
||||
|
||||
We've dropped the use of CONFIG in the
|
||||
Community Version :doc:`version 0.2.0<../changelog/0.2.0-changelog>`, released in January 2021.
|
||||
This means parameters that were previously specified in the
|
||||
CONFIG dictionary should now be passed directly into the constructor.
|
||||
Practically, this means that old constructions like:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class SomeMobject(Thing):
|
||||
CONFIG = {
|
||||
"stroke_color": RED,
|
||||
"fill_opacity": 0.7,
|
||||
"radius": 3,
|
||||
"my_awesome_property": 42,
|
||||
}
|
||||
# add methods here
|
||||
|
||||
should now be defined like:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class SomeMobject(VMobject):
|
||||
def __init__(
|
||||
self,
|
||||
stroke_color=RED,
|
||||
fill_opacity=0.7,
|
||||
radius=3,
|
||||
my_awesome_property=42,
|
||||
**kwargs
|
||||
):
|
||||
self.radius = 3
|
||||
self.my_awesome_property = 42
|
||||
super().__init__(
|
||||
stroke_color=stroke_color, fill_opacity=fill_opacity, **kwargs
|
||||
) # passing arguments into the parent class
|
||||
# add methods here
|
||||
|
||||
For scenes, this is even easier:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Test(Scene):
|
||||
CONFIG = {"a": 1, "b": 2}
|
||||
|
||||
becomes:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Test(Scene):
|
||||
def construct(self):
|
||||
self.a = 1
|
||||
self.b = 2
|
||||
|
||||
A python command does not work
|
||||
------------------------------
|
||||
|
||||
If a python command does not work,
|
||||
try adding ``python -m`` in front of it.
|
||||
For example, if ``pip install manim`` does not work, you can try ``python -m pip install manim``.
|
||||
|
||||
undefined symbol
|
||||
----------------
|
||||
|
||||
If you are using anaconda, run the following command:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
conda install -c conda-forge pycairo
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
Differences between Manim Versions
|
||||
==================================
|
||||
|
||||
While originally a single library, there are now three main versions of manim,
|
||||
each with their own advantages, disadvantages, and ideal use cases.
|
||||
It is important to understand these differences in order to select the best version
|
||||
for your use case and avoid confusion arising from version mismatches.
|
||||
|
||||
A brief history of Manim
|
||||
************************
|
||||
|
||||
Manim was originally created by Grant Sanderson as a personal project and for use in his YouTube channel,
|
||||
`3Blue1Brown <https://www.youtube.com/channel/UCYO_jab_esuFRV4b17AJtAw>`_. As his channel gained popularity,
|
||||
many grew to like the style of his animations and wanted to use manim for their own projects.
|
||||
However, as manim was only intended for personal use,
|
||||
it was very difficult for other users to install and use it.
|
||||
|
||||
In late 2019, Grant started working on faster OpenGL rendering in a new branch,
|
||||
known as the shaders branch. In mid-2020, a group of developers forked it into what is now the community edition;
|
||||
this is the version documented on this website.
|
||||
In early 2021, Grant merged the shaders branch back into master, making it the default branch in his repository.
|
||||
The old version is still available as the branch ``cairo-backend``.
|
||||
|
||||
The three versions of Manim
|
||||
***************************
|
||||
|
||||
There are currently three main versions of manim. They are as follows:
|
||||
|
||||
- **ManimCE**: The community edition of manim. This is the version documented by this website, and is named `manim <https://pypi.org/project/manim/>`_ on pip.
|
||||
- `ManimGL <https://github.com/3b1b/manim>`_: The current version of manim that is used by 3blue1brown. It supports OpenGL rendering and interactivity, and is named ``manimgl`` on pip. You can find documentation for it `here <https://3b1b.github.io/manim/index.html>`_.
|
||||
- `ManimCairo <https://github.com/3b1b/manim/tree/cairo-backend>`_: The old version of manim originally used by 3blue1brown. It is not available on pip.
|
||||
|
||||
Which version to use
|
||||
********************
|
||||
We recommend using the community edition for most purposes, as it has been developed to be more stable,
|
||||
better tested, quicker to respond to community contributions, and easier for beginners to use.
|
||||
It also has partial experimental OpenGL support and should have full support shortly (as of April 2021).
|
||||
|
||||
If you would like to use a version with full OpenGL support or render recent 3Blue1Brown videos (2020 onwards), you should use ManimGL.
|
||||
|
||||
If you would like to render old 3Blue1Brown projects (2019 and before), you should use ManimCairo.
|
||||
|
||||
Notes on installation, documentation, and use
|
||||
*********************************************
|
||||
If you are a beginner, it is very important that you only use the documentation for your desired version.
|
||||
Trying to install or learn manim using documentation or guides made for different versions will likely fail and only lead to more confusion.
|
||||
As many tutorials and guides on the internet are outdated, we do not recommend you follow them.
|
||||
You should only read tutorials and documentation for other versions once you are aware of the differences between them
|
||||
and know how to adapt code for your desired version.
|
||||
|
|
@ -3,7 +3,7 @@ Reference Manual
|
|||
|
||||
This reference manual details modules, functions, and variables included in
|
||||
Manim, describing what they are and what they do. For learning how to use
|
||||
Manim, see :doc:`tutorials`. For a list of changes since the last release, see
|
||||
Manim, see :doc:`tutorials/index`. For a list of changes since the last release, see
|
||||
the :doc:`changelog`.
|
||||
|
||||
.. warning:: The pages linked to here are currently a work in progress.
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ Module Index
|
|||
~utils.config_ops
|
||||
~utils.deprecation
|
||||
~utils.debug
|
||||
~utils.docbuild
|
||||
~utils.hashing
|
||||
~utils.ipython_magic
|
||||
~utils.images
|
||||
|
|
|
|||
|
|
@ -1,37 +0,0 @@
|
|||
Reporting bugs
|
||||
===============
|
||||
|
||||
One of the best ways of contributing to Manim is by reporting bugs. If you
|
||||
have encountered something that you believe is a bug, please follow these
|
||||
steps:
|
||||
|
||||
1. First of all, make sure you are running the latest version of manim. If
|
||||
not, update your version and try again.
|
||||
|
||||
2. Search for other users who may have had similar issues in the
|
||||
past. Search the repository's `issues page <https://github.com/ManimCommunity/manim/issues>`_ (don't forget to search closed
|
||||
issues), bring it up on our `Discord server <https://www.manim.community/discord/>`_, use sites like StackOverflow, and exercise
|
||||
your best Google practices. If you can't find anything helpful, then go to
|
||||
the next step.
|
||||
|
||||
3. Can reproduce the issue, i.e. that you have some code that
|
||||
illustrates the bug **every time** (or at least most of the time) it is
|
||||
executed.
|
||||
|
||||
4. Clarify what behavior you expected, and how the actual behavior
|
||||
differs from your expectation.
|
||||
|
||||
5. Gather information about your environment, such as your
|
||||
operating system, python version, and any stack traces that the code may
|
||||
have generated (if applicable).
|
||||
|
||||
4. Please open an issue only after you have gathered this information. When
|
||||
submitting an issue, make sure to follow the template (this is the default
|
||||
text you are shown when first opening the 'New Issue' page). A community
|
||||
member will (hopefully) respond and start a conversation to address the
|
||||
issue.
|
||||
|
||||
7. Please give the community a reasonable amount of time before asking again,
|
||||
or insisting on your issue. Keep in mind that everyone is a volunteer. If
|
||||
you wait for a reasonable amount of time and you receive no response, feel
|
||||
free to ask again.
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
Tutorials
|
||||
============
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
|
||||
tutorials/quickstart
|
||||
tutorials/a_deeper_look
|
||||
tutorials/building_blocks
|
||||
tutorials/configuration
|
||||
tutorials/using_text
|
||||
|
|
@ -13,7 +13,7 @@ concepts is implemented in manim as a separate class: the :class:`.Mobject`,
|
|||
:class:`.Animation`, and :class:`.Scene` classes.
|
||||
|
||||
.. note:: It is recommended that you read the tutorials :doc:`quickstart` and
|
||||
:doc:`a_deeper_look` before reading this page.
|
||||
:doc:`output_and_config` before reading this page.
|
||||
|
||||
|
||||
********
|
||||
|
|
|
|||
10
docs/source/tutorials/index.rst
Normal file
10
docs/source/tutorials/index.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
Tutorials
|
||||
=========
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
|
||||
quickstart
|
||||
output_and_config
|
||||
building_blocks
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
A deeper look
|
||||
=============
|
||||
Manim's Output Settings
|
||||
=======================
|
||||
|
||||
This document will focus on understanding manim's output files and some of the
|
||||
main command-line flags available.
|
||||
|
|
@ -296,4 +296,5 @@ same folder as the .mp4 files, and with the same name, but a different file
|
|||
extension.
|
||||
|
||||
This was a quick review of some of the most frequent command-line flags. For a
|
||||
thorough review of all flags available, see :doc:`configuration`.
|
||||
thorough review of all flags available, see the
|
||||
:doc:`thematic guide on Manim's configuration system </guides/configuration>`.
|
||||
|
|
@ -86,8 +86,8 @@ You just wrote your first Manim scene from scratch.
|
|||
If you get an error
|
||||
message instead, you do not see a video, or if the video output does not
|
||||
look like the preceding animation, it is likely that Manim has not been
|
||||
installed correctly. Please refer to the :doc:`../installation/troubleshooting`
|
||||
page for more information.
|
||||
installed correctly. Please refer to our :doc:`FAQ section </faq/index>`
|
||||
for help with the most common issues.
|
||||
|
||||
|
||||
***********
|
||||
|
|
@ -355,7 +355,7 @@ You're done!
|
|||
With a working installation of Manim and this sample project under your belt,
|
||||
you're ready to start creating animations of your own. To learn
|
||||
more about what Manim is doing under the hood, move on to the next tutorial:
|
||||
:doc:`a_deeper_look`. For an overview of
|
||||
:doc:`output_and_config`. For an overview of
|
||||
Manim's features, as well as its configuration and other settings, check out the
|
||||
other :doc:`../tutorials`. For a list of all available features, refer to the
|
||||
other :doc:`Tutorials <../tutorials/index>`. For a list of all available features, refer to the
|
||||
:doc:`../reference` page.
|
||||
|
|
|
|||
10
docs/source/tutorials_guides.rst
Normal file
10
docs/source/tutorials_guides.rst
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
Tutorials & Guides
|
||||
==================
|
||||
|
||||
.. toctree::
|
||||
:caption: Table of Contents
|
||||
:maxdepth: 2
|
||||
|
||||
tutorials/index
|
||||
guides/index
|
||||
faq/index
|
||||
|
|
@ -6,7 +6,7 @@ height/width, frame rate), output (e.g. directories, logging), styling
|
|||
(e.g. background color, transparency), and general behavior (e.g. writing a
|
||||
movie vs writing a single frame).
|
||||
|
||||
See :doc:`/tutorials/configuration` for an introduction to Manim's configuration system.
|
||||
See :doc:`/guides/configuration` for an introduction to Manim's configuration system.
|
||||
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
|
|
|||
|
|
@ -22,6 +22,30 @@ if TYPE_CHECKING:
|
|||
|
||||
|
||||
class Homotopy(Animation):
|
||||
"""A Homotopy.
|
||||
|
||||
This is an animation transforming the points of a mobject according
|
||||
to the specified transformation function. With the parameter :math:`t`
|
||||
moving from 0 to 1 throughout the animation and :math:`(x, y, z)`
|
||||
describing the coordinates of the point of a mobject,
|
||||
the function passed to the ``homotopy`` keyword argument should
|
||||
transform the tuple :math:`(x, y, z, t)` to :math:`(x', y', z')`,
|
||||
the coordinates the original point is transformed to at time :math:`t`.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
homotopy
|
||||
A function mapping :math:`(x, y, z, t)` to :math:`(x', y', z')`.
|
||||
mobject
|
||||
The mobject transformed under the given homotopy.
|
||||
run_time
|
||||
The run time of the animation.
|
||||
apply_function_kwargs
|
||||
Keyword arguments propagated to :meth:`.Mobject.apply_function`.
|
||||
kwargs
|
||||
Further keyword arguments passed to the parent class.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
homotopy: Callable[[float, float, float, float], tuple[float, float, float]],
|
||||
|
|
@ -30,10 +54,6 @@ class Homotopy(Animation):
|
|||
apply_function_kwargs: dict[str, Any] | None = None,
|
||||
**kwargs,
|
||||
) -> None:
|
||||
"""
|
||||
Homotopy is a function from
|
||||
(x, y, z, t) to (x', y', z')
|
||||
"""
|
||||
self.homotopy = homotopy
|
||||
self.apply_function_kwargs = (
|
||||
apply_function_kwargs if apply_function_kwargs is not None else {}
|
||||
|
|
|
|||
|
|
@ -54,8 +54,7 @@ if TYPE_CHECKING:
|
|||
|
||||
|
||||
class CoordinateSystem:
|
||||
r"""
|
||||
Abstract class for Axes and NumberPlane
|
||||
r"""Abstract base class for Axes and NumberPlane.
|
||||
|
||||
Examples
|
||||
--------
|
||||
|
|
@ -193,11 +192,11 @@ class CoordinateSystem:
|
|||
return np.sqrt(x**2 + y**2), np.arctan2(y, x)
|
||||
|
||||
def c2p(self, *coords):
|
||||
"""Abbreviation for coords_to_point"""
|
||||
"""Abbreviation for :meth:`coords_to_point`"""
|
||||
return self.coords_to_point(*coords)
|
||||
|
||||
def p2c(self, point):
|
||||
"""Abbreviation for point_to_coords"""
|
||||
"""Abbreviation for :meth:`point_to_coords`"""
|
||||
return self.point_to_coords(point)
|
||||
|
||||
def pr2pt(self, radius: float, azimuth: float) -> np.ndarray:
|
||||
|
|
@ -368,7 +367,9 @@ class CoordinateSystem:
|
|||
x_label: float | str | Mobject = "x",
|
||||
y_label: float | str | Mobject = "y",
|
||||
) -> VGroup:
|
||||
"""Defines labels for the x_axis and y_axis of the graph. For increased control over the position of the labels,
|
||||
"""Defines labels for the x_axis and y_axis of the graph.
|
||||
|
||||
For increased control over the position of the labels,
|
||||
use :meth:`get_x_axis_label` and :meth:`get_y_axis_label`.
|
||||
|
||||
Parameters
|
||||
|
|
@ -438,7 +439,7 @@ class CoordinateSystem:
|
|||
ax = Axes(x_range=[0, 7])
|
||||
x_pos = [x for x in range(1, 8)]
|
||||
|
||||
# strings are automatically converted into a `Tex` mobject.
|
||||
# strings are automatically converted into a Tex mobject.
|
||||
x_vals = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
||||
x_dict = dict(zip(x_pos, x_vals))
|
||||
ax.add_coordinates(x_dict)
|
||||
|
|
@ -1610,10 +1611,10 @@ class CoordinateSystem:
|
|||
|
||||
Examples
|
||||
--------
|
||||
.. manim:: T_labelExample
|
||||
.. manim:: TLabelExample
|
||||
:save_last_frame:
|
||||
|
||||
class T_labelExample(Scene):
|
||||
class TLabelExample(Scene):
|
||||
def construct(self):
|
||||
# defines the axes and linear function
|
||||
axes = Axes(x_range=[-1, 10], y_range=[-1, 10], x_length=9, y_length=6)
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ class BarChart(Axes):
|
|||
self.y_axis.add_numbers()
|
||||
|
||||
def _add_x_axis_labels(self):
|
||||
"""Essentially ``:meth:~.NumberLine.add_labels``, but differs in that
|
||||
"""Essentially :meth`:~.NumberLine.add_labels`, but differs in that
|
||||
the direction of the label with respect to the x_axis changes to UP or DOWN
|
||||
depending on the value.
|
||||
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ class Scene:
|
|||
) -> None:
|
||||
"""Create separation here; the last section gets finished and a new one gets created.
|
||||
``skip_animations`` skips the rendering of all animations in this section.
|
||||
Refer to :doc:`the documentation</tutorials/a_deeper_look>` on how to use sections.
|
||||
Refer to :doc:`the documentation</tutorials/output_and_config>` on how to use sections.
|
||||
"""
|
||||
self.renderer.file_writer.next_section(name, type, skip_animations)
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ class DefaultSectionType(str, Enum):
|
|||
|
||||
class Section:
|
||||
"""A :class:`.Scene` can be segmented into multiple Sections.
|
||||
Refer to :doc:`the documentation</tutorials/a_deeper_look>` for more info.
|
||||
Refer to :doc:`the documentation</tutorials/output_and_config>` for more info.
|
||||
It consists of multiple animations.
|
||||
|
||||
Attributes
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ def deprecated(
|
|||
"""
|
||||
warning = warning_msg(True)
|
||||
doc_string = func.__doc__ or ""
|
||||
func.__doc__ = f"{doc_string}\n\n.. admonition:: Deprecated\n :class: attention\n\n {warning}"
|
||||
func.__doc__ = f"{doc_string}\n\n.. attention:: Deprecated\n {warning}"
|
||||
|
||||
def deprecate(func: Callable, *args, **kwargs):
|
||||
"""The actual decorator used to extend the callables behavior.
|
||||
|
|
|
|||
|
|
@ -94,12 +94,20 @@ from manim import QUALITIES
|
|||
classnamedict = {}
|
||||
|
||||
|
||||
class skip_manim_node(nodes.Admonition, nodes.Element):
|
||||
class SkipManimNode(nodes.Admonition, nodes.Element):
|
||||
"""Auxiliary node class that is used when the ``skip-manim`` tag is present
|
||||
or ``.pot`` files are being built.
|
||||
|
||||
Skips rendering the manim directive and outputs a placeholder instead.
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
def visit(self, node, name=""):
|
||||
self.visit_admonition(node, name)
|
||||
if not isinstance(node[0], nodes.title):
|
||||
node.insert(0, nodes.title("skip-manim", "Example Placeholder"))
|
||||
|
||||
|
||||
def depart(self, node):
|
||||
|
|
@ -148,19 +156,24 @@ class ManimDirective(Directive):
|
|||
final_argument_whitespace = True
|
||||
|
||||
def run(self):
|
||||
# Render is skipped if the tag skip-manim is present
|
||||
# Rendering is skipped if the tag skip-manim is present,
|
||||
# or if we are making the pot-files
|
||||
should_skip = (
|
||||
"skip-manim" in self.state.document.settings.env.app.builder.tags.tags
|
||||
)
|
||||
# Or if we are making the pot-files
|
||||
should_skip = (
|
||||
should_skip
|
||||
or self.state.document.settings.env.app.builder.name == "gettext"
|
||||
)
|
||||
if should_skip:
|
||||
node = skip_manim_node()
|
||||
node = SkipManimNode()
|
||||
self.state.nested_parse(
|
||||
StringList(self.content[0]),
|
||||
StringList(
|
||||
[
|
||||
f"Placeholder block for ``{self.arguments[0]}``.",
|
||||
"",
|
||||
".. code-block:: python",
|
||||
"",
|
||||
]
|
||||
+ [" " + line for line in self.content]
|
||||
),
|
||||
self.content_offset,
|
||||
node,
|
||||
)
|
||||
|
|
@ -342,7 +355,7 @@ def _delete_rendering_times(*args):
|
|||
|
||||
|
||||
def setup(app):
|
||||
app.add_node(skip_manim_node, html=(visit, depart))
|
||||
app.add_node(SkipManimNode, html=(visit, depart))
|
||||
|
||||
setup.app = app
|
||||
setup.config = app.config
|
||||
|
|
|
|||
87
poetry.lock
generated
87
poetry.lock
generated
|
|
@ -1002,6 +1002,28 @@ numpy = "*"
|
|||
[package.extras]
|
||||
test = ["pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
version = "2.1.0"
|
||||
description = "Python port of markdown-it. Markdown parsing, done right!"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
mdurl = ">=0.1,<1.0"
|
||||
typing_extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""}
|
||||
|
||||
[package.extras]
|
||||
benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"]
|
||||
code_style = ["pre-commit (==2.6)"]
|
||||
compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.3.6,<3.4.0)", "mistletoe (>=0.8.1,<0.9.0)", "mistune (>=2.0.2,<2.1.0)", "panflute (>=2.1.3,<2.2.0)"]
|
||||
linkify = ["linkify-it-py (>=1.0,<2.0)"]
|
||||
plugins = ["mdit-py-plugins"]
|
||||
profiling = ["gprof2dot"]
|
||||
rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx-book-theme"]
|
||||
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
||||
|
||||
[[package]]
|
||||
name = "markupsafe"
|
||||
version = "2.1.1"
|
||||
|
|
@ -1048,6 +1070,30 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "mdit-py-plugins"
|
||||
version = "0.3.0"
|
||||
description = "Collection of plugins for markdown-it-py"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = "~=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
markdown-it-py = ">=1.0.0,<3.0.0"
|
||||
|
||||
[package.extras]
|
||||
code_style = ["pre-commit (==2.6)"]
|
||||
rtd = ["myst-parser (>=0.14.0,<0.15.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"]
|
||||
testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"]
|
||||
|
||||
[[package]]
|
||||
name = "mdurl"
|
||||
version = "0.1.1"
|
||||
description = "Markdown URL utilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[[package]]
|
||||
name = "mistune"
|
||||
version = "0.8.4"
|
||||
|
|
@ -1129,6 +1175,29 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "myst-parser"
|
||||
version = "0.17.2"
|
||||
description = "An extended commonmark compliant parser, with bridges to docutils & sphinx."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
docutils = ">=0.15,<0.18"
|
||||
jinja2 = "*"
|
||||
markdown-it-py = ">=1.0.0,<3.0.0"
|
||||
mdit-py-plugins = ">=0.3.0,<0.4.0"
|
||||
pyyaml = "*"
|
||||
sphinx = ">=3.1,<5"
|
||||
typing-extensions = "*"
|
||||
|
||||
[package.extras]
|
||||
code_style = ["pre-commit (>=2.12,<3.0)"]
|
||||
linkify = ["linkify-it-py (>=1.0,<2.0)"]
|
||||
rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"]
|
||||
testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "nbclassic"
|
||||
version = "0.3.7"
|
||||
|
|
@ -2357,7 +2426,7 @@ jupyterlab = ["jupyterlab"]
|
|||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = ">=3.7,<3.11"
|
||||
content-hash = "30528079fd9e1880d63fbbb4fe28e72f90fb1815a48a553d089c9e990a2a79aa"
|
||||
content-hash = "052b9b3efc49510cbcf8618fda2856ca5842b7b29742a53f59728268cd096227"
|
||||
|
||||
[metadata.files]
|
||||
alabaster = [
|
||||
|
|
@ -3025,6 +3094,10 @@ mapbox-earcut = [
|
|||
{file = "mapbox_earcut-0.12.11-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:6542cc54b330c876e62dad15e98dd4df18e2fd75ffb5b9c84d0629bd085ea123"},
|
||||
{file = "mapbox_earcut-0.12.11.tar.gz", hash = "sha256:2808757f8a95eb816d3ce225528c9cb15355afe175f3bcb6837eb7700972e0b9"},
|
||||
]
|
||||
markdown-it-py = [
|
||||
{file = "markdown-it-py-2.1.0.tar.gz", hash = "sha256:cf7e59fed14b5ae17c0006eff14a2d9a00ed5f3a846148153899a0224e2c07da"},
|
||||
{file = "markdown_it_py-2.1.0-py3-none-any.whl", hash = "sha256:93de681e5c021a432c63147656fe21790bc01231e0cd2da73626f1aa3ac0fe27"},
|
||||
]
|
||||
markupsafe = [
|
||||
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
|
||||
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
|
||||
|
|
@ -3112,6 +3185,14 @@ mccabe = [
|
|||
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
|
||||
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
|
||||
]
|
||||
mdit-py-plugins = [
|
||||
{file = "mdit-py-plugins-0.3.0.tar.gz", hash = "sha256:ecc24f51eeec6ab7eecc2f9724e8272c2fb191c2e93cf98109120c2cace69750"},
|
||||
{file = "mdit_py_plugins-0.3.0-py3-none-any.whl", hash = "sha256:b1279701cee2dbf50e188d3da5f51fee8d78d038cdf99be57c6b9d1aa93b4073"},
|
||||
]
|
||||
mdurl = [
|
||||
{file = "mdurl-0.1.1-py3-none-any.whl", hash = "sha256:6a8f6804087b7128040b2fb2ebe242bdc2affaeaa034d5fc9feeed30b443651b"},
|
||||
{file = "mdurl-0.1.1.tar.gz", hash = "sha256:f79c9709944df218a4cdb0fcc0b0c7ead2f44594e3e84dc566606f04ad749c20"},
|
||||
]
|
||||
mistune = [
|
||||
{file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"},
|
||||
{file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"},
|
||||
|
|
@ -3210,6 +3291,10 @@ mypy-extensions = [
|
|||
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
|
||||
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
|
||||
]
|
||||
myst-parser = [
|
||||
{file = "myst-parser-0.17.2.tar.gz", hash = "sha256:4c076d649e066f9f5c7c661bae2658be1ca06e76b002bb97f02a09398707686c"},
|
||||
{file = "myst_parser-0.17.2-py3-none-any.whl", hash = "sha256:1635ce3c18965a528d6de980f989ff64d6a1effb482e1f611b1bfb79e38f3d98"},
|
||||
]
|
||||
nbclassic = [
|
||||
{file = "nbclassic-0.3.7-py3-none-any.whl", hash = "sha256:89184baa2d66b8ac3c8d3df57cbcf16f34148954d410a2fb3e897d7c18f2479d"},
|
||||
{file = "nbclassic-0.3.7.tar.gz", hash = "sha256:36dbaa88ffaf5dc05d149deb97504b86ba648f4a80a60b8a58ac94acab2daeb5"},
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ sphinxcontrib-programoutput = "^0.17"
|
|||
data-science-types = "^0.2.23"
|
||||
psutil-wheels = {version = "5.8.0", python = ">=3.10"}
|
||||
psutil = {version = "^5.8.0", python = "<3.10"}
|
||||
myst-parser = "^0.17.2"
|
||||
|
||||
|
||||
[tool.poetry.urls]
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ class QuuzAll:
|
|||
pass
|
||||
|
||||
|
||||
doc_admonition = "\n\n.. admonition:: Deprecated\n :class: attention\n\n "
|
||||
doc_admonition = "\n\n.. attention:: Deprecated\n "
|
||||
|
||||
|
||||
def test_deprecate_class_no_args(warn_caplog_manim):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue