Repository: ManimCommunity/manim
File: manim/mobject/value_tracker.py (Python)

Code before:
                self.play(pointer_value.animate.increment_value(-2))
                self.wait(0.5)
    """

    def __init__(self, value=0, **kwargs):
        Mobject.__init__(self, **kwargs)
        self.points = np.zeros((1, 3))
        self.set_value(value)

    def get_value(self) -> float:
        """Get the current value of the ValueTracker. This value changes continuously
        when :attr:`animate` for the ValueTracker is called."""
        return self.points[0, 0]

    def set_value(self, value: Union[float, int]):
        """Sets a new scalar value to the ValueTracker"""
        self.points[0, 0] = value
        return self

    def increment_value(self, d_value: Union[float, int]):
        """Increments (adds) a scalar value  to the ValueTracker"""
        self.set_value(self.get_value() + d_value)
        return self

    def __bool__(self):
        """Allows ValueTracker to be tested directly in boolean expressions. True if the value of the ValueTracker is nonzero."""
        return bool(self.get_value())

    def __iadd__(self, d_value: Union[float, int]):
        """adds ``+=`` syntax to increment the value of the ValueTracker"""
        self.increment_value(d_value)
        return self

    def __ifloordiv__(self, d_value: Union[float, int]):
        """adds ``//=`` syntax to floor divide the value of the ValueTracker"""
        self.set_value(self.get_value() // d_value)
        return self

    def __imod__(self, d_value: Union[float, int]):
        """adds ``%=`` syntax to floor mod the value of the ValueTracker"""
        self.set_value(self.get_value() % d_value)
        return self

    def __imul__(self, d_value: Union[float, int]):
        """adds ``*=`` syntax to multiply the value of the ValueTracker"""
        self.set_value(self.get_value() * d_value)
        return self

    def __ipow__(self, d_value: Union[float, int]):
        """adds ``**=`` syntax to exponentiate the value of the ValueTracker"""
        self.set_value(self.get_value() ** d_value)

Review comment (suggestion):
While the docstring is a true statement, it rather documents the consequence of the implementation, rather than the implementation itself.

(This is also just developer facing documentation; double underscore methods are not rendered in the documentation.)

```suggestion
        """Return whether the value of this value tracker evaluates as true."""
```

Code after:
                self.wait(0.5)
                self.play(tracker.animate.set_value(3))
                self.play(tracker.animate.increment_value(-2))
                self.wait(0.5)

    .. note::

        You can also link ValueTrackers to updaters. In this case, you have to make sure that the
        ValueTracker is added to the scene by ``add``

    .. manim:: ValueTrackerExample

        class ValueTrackerExample(Scene):
            def construct(self):
                tracker = ValueTracker(0)
                label = Dot(radius=3).add_updater(lambda x : x.set_x(tracker.get_value()))
                self.add(label)
                self.add(tracker)
                tracker.add_updater(lambda mobject, dt: mobject.increment_value(dt))
                self.wait(2)

    """

    def __init__(self, value=0, **kwargs):
        Mobject.__init__(self, **kwargs)
        self.points = np.zeros((1, 3))
        self.set_value(value)

    def get_value(self) -> float:
        """Get the current value of this ValueTracker."""
        return self.points[0, 0]

    def set_value(self, value: float):
        """Sets a new scalar value to the ValueTracker"""
        self.points[0, 0] = value
        return self

    def increment_value(self, d_value: float):
        """Increments (adds) a scalar value  to the ValueTracker"""
        self.set_value(self.get_value() + d_value)
        return self

    def __bool__(self):
        """Return whether the value of this value tracker evaluates as true."""
        return bool(self.get_value())

    def __iadd__(self, d_value: float):
        """adds ``+=`` syntax to increment the value of the ValueTracker"""
        self.increment_value(d_value)
        return self