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:
Benjamin Hackl 2022-05-27 10:45:31 +02:00 committed by GitHub
commit 48747a74d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 765 additions and 467 deletions

View file

@ -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:

View file

@ -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

View file

@ -1,5 +1,5 @@
sphinx==4.1.2
furo
recommonmark>=0.5.0
myst-parser
sphinx
sphinx-copybutton
sphinxext-opengraph

View file

@ -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

View file

@ -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

View file

@ -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
View 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
View 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!

View file

@ -0,0 +1,9 @@
Frequently Asked Questions
==========================
.. toctree::
:caption: Table of Contents
:maxdepth: 2
:glob:
*

View 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
```

View file

@ -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.

View file

@ -0,0 +1,9 @@
Thematic Guides
===============
.. toctree::
:caption: Table of Contents
:maxdepth: 2
:glob:
*

View file

@ -1,6 +1,6 @@
##########
Using Text
##########
###########################
Rendering Text and Formulas
###########################
There are two different ways by which you can render **Text** in videos:

View file

@ -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

View file

@ -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).

View file

@ -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

View file

@ -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.

View file

@ -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.

View file

@ -16,6 +16,7 @@ Module Index
~utils.config_ops
~utils.deprecation
~utils.debug
~utils.docbuild
~utils.hashing
~utils.ipython_magic
~utils.images

View file

@ -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.

View file

@ -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

View file

@ -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.
********

View file

@ -0,0 +1,10 @@
Tutorials
=========
.. toctree::
:caption: Table of Contents
:maxdepth: 2
quickstart
output_and_config
building_blocks

View file

@ -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>`.

View file

@ -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.

View file

@ -0,0 +1,10 @@
Tutorials & Guides
==================
.. toctree::
:caption: Table of Contents
:maxdepth: 2
tutorials/index
guides/index
faq/index

View file

@ -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

View file

@ -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 {}

View file

@ -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)

View file

@ -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.

View file

@ -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)

View file

@ -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

View file

@ -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.

View file

@ -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
View file

@ -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"},

View file

@ -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]

View file

@ -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):