*******
v0.15.2
*******

:Date: April 25, 2022

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

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

* Bailey Powers +
* Benjamin Hackl
* Dan Walsh +
* Darigov Research
* Darylgolden
* David Millard +
* Hamidreza Hashemi +
* Jan-Hendrik Müller
* Jason Villanueva
* Jonathan Alpert +
* Joy Bhalla
* Kian Cross +
* Luca +
* Mohsin Shaikh +
* Naveen M K
* Prismo +
* Ryan McCauley
* WillSoltas +
* ad_chaos
* darkways +
* dawn*squirryl +
* icedcoffeeee
* peaceheis
* sparshg
* trickypr +


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

* Benjamin Hackl
* Dan Walsh
* Darylgolden
* GameDungeon
* Hugues Devimeux
* Jan-Hendrik Müller
* Jason Villanueva
* Jonathan Alpert
* Luca
* Naveen M K
* Prismo
* Ryan McCauley
* ad_chaos
* darkways
* hickmott99
* icedcoffeeee
* peaceheis

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

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

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

* :pr:`1975`: Improved CLI help page styling
   - Updates dependencies on Click and Cloup libraries for CLI help page styling.
   - Removed the dependency on click-default-group.
   - Added ``no_args_is_help`` parameter for ``manim render`` to allow easy access to help page.
   - Added note to ``manim`` help page epilog on how to access other command help pages.

* :pr:`2404`: Add :class:`.SpiralIn` Animation
   - Make :class:`.ManimBanner` to use :class:`.SpiralIn`.

* :pr:`2534`: Implement :class:`~.OpenGLImageMobject`


* :pr:`2684`: Created a more accessible way to create Angles with line.py angle function - :meth:`.Angle.from_three_points`


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

* :pr:`2062`: Reuse shader wrappers and shader data


* :pr:`2642`: Migrated ``file_ops.py`` and ``scene_file_writer.py`` from os.path to Pathlib
   In ``file_ops.py`` and ``scene_file_writer.py``: Uses of str type file names have been mostly (see further information) converted to pathlib's Path objects. Uses of ``os.path`` methods have been converted to equivalent pathlib methods.

* :pr:`2655`: Fix :func:`.assert_is_mobject_method` when using OpenGL


* :pr:`2665`: Improved handling of attributes when using the ``.animate`` syntax


* :pr:`2674`: Document and type ``simple_functions.py``
   - Add documentation for ``simple_functions.py``.
   - Small additions with some extra clarity for these functions.

* :pr:`2693`: Allow using :meth:`.MovingCamera.auto_zoom` without animation
   Allows auto zooming camera without having to play an animation by passing an ``animation=False`` argument

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

* :pr:`2546`: Fixed a file logging bug and some maintenance


* :pr:`2597`: Fix Bug in :class:`.Uncreate` with ``rate_func`` via introducing new parameter ``reversed`` to :class:`.Animation`
   - Refractor the :class:`.Uncreate`. The new implementation uses a flag member ``reversed``. Set it to ``True`` and its superclass handles the reverse.
   - Introduce a bool parameter ``reversed`` to :class:`.Animation`. It decides whether the animation needs to be played backwards. Default to be False.
   - Add conditional branches in :meth:`.Animation.get_sub_alpha`. If the parameter ``reversed`` is True, it would set ``rate_func(t)`` to ``rate_func(1 - t)``.

* :pr:`2613`: Fixed bug in :meth:`.Circle.point_at_angle` when the angle is not in the interval :math:`[0, 2\pi]`


* :pr:`2634`: Fix background lines drawn twice in :class:`.NumberPlane`


* :pr:`2648`: Handle user-defined centers for Wiggle animation


* :pr:`2658`: Fix arguments of overridden ``set_style`` for :class:`.BackgroundRectangle`
   Using :class:`.Write` animation on a :class:`.Text` object with ``.add_background_rectangle()`` applied no longer generates a ``TypeError``.

* :pr:`2668`: (Re)set background color of :class:`.OpenGLRenderer` when initializing scene


* :pr:`2676`: Fixed propagation of custom attributes in animations for the OpenGL renderer


* :pr:`2688`: Fixed two minor issues of :class:`.SpiralIn` and :class:`.ManimBanner`


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

* :pr:`2609`: Copyedit troubleshooting.rst


* :pr:`2610`: Add example PolygonOnAxes


* :pr:`2617`: Re-added :mod:`.value_tracker` documentation


* :pr:`2619`: Improve Example for arrange_in_grid


* :pr:`2620`: Fixed typo in :meth:`.Animation.is_introducer`


* :pr:`2640`: Copyedited Documentation
   Reviewed ``tutorials/configurations.rst``. Edited simple mistakes such as Manim not being capitalized and commas.

* :pr:`2649`: Document and type utils/iterables.py


* :pr:`2651`: Update copyright year in documentation to 2020-2022

* :pr:`2663`: Added documentation for scene updater functions


* :pr:`2686`: Add instructions to install extra dependencies with poetry


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

* :pr:`2561`: Run tests on Linux-aarch64


* :pr:`2656`: Fixed incompatibility with black version


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

* :pr:`2630`: Remove WebGL renderer
   The WebGL renderer is broken and unmaintained. The support for it in Manim is removed.

* :pr:`2652`: Update ``cloup`` version to 0.13.0 from 0.7.0


* :pr:`2678`: Require ``backports-cached-property`` only for Python < 3.8


* :pr:`2685`: Migrate from ``os.path`` to ``pathlib`` in testing scripts
   This pull request changes a number of instances of ``os.path`` to Pathlib objects and functions. In addition, this PR modifies the SVGMobject constructor to accept both a Pathlib object or a string variable pathname its constructor.

* :pr:`2691`:  Removed :class:`CameraFrame`


* :pr:`2696`: Made changelog generation run in parallel plus further improvements to ``scripts/dev_changelog.py``


* :pr:`2697`: Sort PRs by number in changelog sections before writing


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

* :pr:`2694`: Prepared bugfix release v0.15.2
