*******
v0.12.0
*******

:Date: November 02, 2021

Contributors
============

A total of 40 people contributed to this
release. People with a '+' by their names authored a patch for the first
time.

* Anima. +
* Arcstur +
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* David Yang +
* Dhananjay Goratela +
* Ethan Rooke +
* Eugene Chung +
* GameDungeon
* Gustav-Rixon +
* Jan-Hendrik Müller
* Josiah Winslow +
* Laith Bahodi
* Martmists +
* Michael Hill +
* Naveen M K
* Nick +
* NotWearingPants +
* Peeter Joot +
* Ryan McCauley
* Viicos +
* heitor +
* icedcoffeeee
* kieran-pringle +
* Виктор Виктор +


The patches included in this release have been reviewed by
the following contributors.

* Alex Lembcke
* Anima.
* Benjamin Hackl
* Christopher Besch
* Darylgolden
* David Yang
* Dhananjay Goratela
* Ethan Rooke
* Eugene Chung
* Gustav-Rixon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Laith Bahodi
* Mysaa
* Naveen M K
* Nick
* Oliver
* Ryan McCauley
* Viicos
* icedcoffeeee
* kieran-pringle

Pull requests merged
====================

A total of 52 pull requests were merged for this release.

Highlights
----------

* :pr:`1812`: Implemented logarithmic scaling for :class:`~.NumberLine` / :class:`~.Axes`
   This implements scaling bases that can be passed to the ``scaling`` keyword
   argument of :class:`.NumberLine`. See :class:`.LogBase` (for a logarithmic scale) and
   :class:`.LinearBase` (for the default scale) for more details and examples.

* :pr:`2152`: Introduced API for scene sections via :meth:`.Scene.next_section`
   Sections divide a scene into multiple parts, resulting in multiple output videos (when using the ``--save_sections`` flag).
   The cuts between two sections are defined by the user in the :meth:`~.Scene.construct` method.
   Each section has an optional name and type, which can be used by a plugin (`see an example <https://github.com/ManimEditorProject/manim_editor>`__).
   You can skip rendering specific sections with the ``skip_animations`` keyword argument.

Deprecated classes and functions
--------------------------------

* :pr:`1926`: OpenGL: changed ``submobjects`` to be a property


* :pr:`2245`: Removed deprecated method ``get_center_point`` and parameters ``azimuth_label_scale``, ``number_scale_value``, ``label_scale``, ``scale_factor``, ``size``, ``x_min``, ``x_max``, ``delta_x``, ``y_min``, ``y_max``, ``delta_y``


* :pr:`2187`: Renamed ``get_graph`` and its variants to :meth:`~.CoordinateSystem.plot`


* :pr:`2065`: Deprecated :class:`~.FullScreenFadeRectangle` and :class:`~.PictureInPictureFrame`


New features
------------

* :pr:`2025`: Implemented :meth:`.CoordinateSystem.input_to_graph_coords` and fixed :meth:`.CoordinateSystem.angle_of_tangent`


* :pr:`2151`: Added option to set the input file from a config file


* :pr:`2128`: Added keyword arguments ``match_center``, ``match_width`` etc. to :meth:`.Mobject.become`


* :pr:`2162`: Implemented :meth:`.MovingCamera.auto_zoom` for automatically zooming onto specified mobjects


* :pr:`2236`: Added ``skip_animations`` argument to :meth:`.Scene.next_section`


* :pr:`2196`: Implemented :meth:`.Line3D.parallel_to` and :meth:`.Line3D.perpendicular_to`


Enhancements
------------

* :pr:`2138`: Fixed example for :meth:`~.Vector.coordinate_label` and added more customization for :class:`~.Matrix`
   - Additional keyword arguments for :meth:`~.Vector.coordinate_label` are passed to the constructed matrix.
   - :class:`~.Matrix` now accepts a ``bracket_config`` keyword argument.

* :pr:`2139`: Changed the color of :class:`~.NumberLine` from ``LIGHT_GREY`` to ``WHITE``


* :pr:`2157`: Added :meth:`.CoordinateSystem.plot_polar_graph`


* :pr:`2243`: Fixed wasteful recursion in :meth:`.Mobject.get_merged_array`


* :pr:`2205`: Improved last frame output handling for the OpenGL renderer


* :pr:`2172`: Added ``should_render`` attribute to disable rendering mobjects


* :pr:`2182`: Changed the default width of videos in Jupyter notebooks to 60%


Fixed bugs
----------

* :pr:`2244`: Fixed :meth:`.CoordinateSystem.get_area` when using few plot points and a boundary graph


* :pr:`2232`: Fixed :class:`.Graph` stopping to update after animating additions/deletions of vertices or edges


* :pr:`2142`: Fixed issue with duplicates in OpenGL family and added tests


* :pr:`2168`: Fixed order of return values of :func:`.space_ops.cartesian_to_spherical`


* :pr:`2160`: Made projection shaders compatible with :class:`.StreamLines`


* :pr:`2140`: Fixed passing color lists to :meth:`.Mobject.set_color` for the OpenGL renderer


* :pr:`2211`: Fixed animations not respecting the specified rate function


* :pr:`2161`: Fixed ``IndexOutOfBoundsError`` in TeX logging


* :pr:`2148`: Fixed :class:`~.Arrow` tip disorientation with :meth:`.Line.put_start_and_end_on`


* :pr:`2192`: Fixed :func:`.svg_path.string_to_numbers` sometimes returning strings


* :pr:`2185`: Fixed type mismatch for height and width parameters of :class:`~.Text`


Documentation-related changes
-----------------------------

* :pr:`2228`: Added a new boolean operation example to the gallery


* :pr:`2239`: Removed erroneous raw string from text tutorial


* :pr:`2184`: Moved comments in :class:`~.VMobject` to documentation


* :pr:`2217`: Removed superfluous dots in documentation of :class:`.Section`


* :pr:`2215`: Fixed typo in docstring of :meth:`.ThreeDAxes.get_z_axis_label`


* :pr:`2212`: Fixed Documentation for Sections


* :pr:`2201`: Fixed a typo in the documentation


* :pr:`2165`: Added Crowdin configuration and changed source files to ``.pot`` format


* :pr:`2130`:  Transferred troubleshooting installation related snippets from Discord to the documentation


* :pr:`2176`: Modified :meth:`.Mobject.set_default` example to prevent leaking across the docs


Changes concerning the testing system
-------------------------------------

* :pr:`2197`: Added tests for resolution flag


* :pr:`2146`: Increased test coverage for OpenGL renderer


Changes to our development infrastructure
-----------------------------------------

* :pr:`2191`: Removed ``add-trailing-comma`` pre-commit hook


Code quality improvements and similar refactors
-----------------------------------------------

* :pr:`2136`: Added type hints to all colors


* :pr:`2220`: Cleanup: let ``Scene.renderer.time`` return something that makes sense


* :pr:`2222`: Updated Classifiers in ``pyproject.toml``: removed Python 3.6, added Python 3.9


* :pr:`2213`: Removed redundant ``partial_movie_files`` parameter in :meth:`.SceneFileWriter.combine_to_movie`


* :pr:`2200`: Addressed some maintenance TODOs
   - Changed an `Exception` to `ValueError`
   - Fixed :meth:`.MappingCamera.points_to_pixel_coords` by adding the ``mobject`` argument of the parent
   - Rounded up width in :class:`.SplitScreenCamera`
   - Added docstring to :meth:`.Camera.capture_mobject`

* :pr:`2194`: Added type hints to :mod:`.utils.images`


* :pr:`2171`: Added type hints to :mod:`.utils.ipython_magic`


* :pr:`2164`: Improved readability of regular expression


New releases
------------

* :pr:`2247`: Prepared new release ``v0.12.0``
