
    lj                        d Z ddlmZ ddgZddlmZ ddlmZ ddlm	Z	 dd	l
mZ dd
lmZ  G d de          Z G d de          ZdS )z Animations for changing numbers.    )annotationsChangingDecimalChangeDecimalToValue)Callable)Any)DecimalNumber   )	Animationinterpolatec                  8     e Zd ZdZ	 dd fdZddZddZ xZS )r   a  Animate a :class:`~.DecimalNumber` to values specified by a user-supplied function.

    Parameters
    ----------
    decimal_mob
        The :class:`~.DecimalNumber` instance to animate.
    number_update_func
        A function that returns the number to display at each point in the animation.
    suspend_mobject_updating
        If ``True``, the mobject is not updated outside this animation.

    Raises
    ------
    TypeError
        If ``decimal_mob`` is not an instance of :class:`~.DecimalNumber`.

    Examples
    --------

    .. manim:: ChangingDecimalExample

        class ChangingDecimalExample(Scene):
            def construct(self):
                number = DecimalNumber(0)
                self.add(number)
                self.play(
                    ChangingDecimal(
                        number,
                        lambda a: 5 * a,
                        run_time=3
                    )
                )
                self.wait()
    Fdecimal_mobr   number_update_funcCallable[[float], float]suspend_mobject_updatingboolkwargsr   returnNonec                x    |                      |           || _         t                      j        |fd|i| d S )Nr   )check_validity_of_inputr   super__init__)selfr   r   r   r   	__class__s        R/home/agentuser/manim-venv/lib/python3.11/site-packages/manim/animation/numbers.pyr   zChangingDecimal.__init__5   s^     	$$[111"4	
 	
2J	
NT	
 	
 	
 	
 	
    c                N    t          |t                    st          d          d S )Nz0ChangingDecimal can only take in a DecimalNumber)
isinstancer   	TypeError)r   r   s     r   r   z'ChangingDecimal.check_validity_of_inputB   s0    +}55 	PNOOO	P 	Pr   alphafloatc                    | j                             |                     |                     |                               d S N)mobject	set_valuer   	rate_func)r   r!   s     r   interpolate_mobjectz#ChangingDecimal.interpolate_mobjectF   s8    t66t~~e7L7LMMNNNNNr   )F)
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   )r!   r"   r   r   )__name__
__module____qualname____doc__r   r   r(   __classcell__r   s   @r   r   r      s        ! !N */	
 
 
 
 
 
 
P P P PO O O O O O O Or   c                  $     e Zd ZdZd fd
Z xZS )r   aE  Animate a :class:`~.DecimalNumber` to a target value using linear interpolation.

    Parameters
    ----------
    decimal_mob
        The :class:`~.DecimalNumber` instance to animate.
    target_number
        The target value to transition to.

    Examples
    --------

    .. manim:: ChangeDecimalToValueExample

        class ChangeDecimalToValueExample(Scene):
            def construct(self):
                number = DecimalNumber(0)
                self.add(number)
                self.play(ChangeDecimalToValue(number, 10, run_time=3))
                self.wait()
    r   r   target_numberintr   r   r   r   c                X    |j          t                      j        |fdfi | d S )Nc                &    t          |           S r$   r   )astart_numberr0   s    r   <lambda>z/ChangeDecimalToValue.__init__.<locals>.<lambda>f   s    ;|]A#N#N r   )numberr   r   )r   r   r0   r   r5   r   s     ` @r   r   zChangeDecimalToValue.__init__a   sS     #)NNNNN	
 	
RX	
 	
 	
 	
 	
r   )r   r   r0   r1   r   r   r   r   )r)   r*   r+   r,   r   r-   r.   s   @r   r   r   J   sG         ,
 
 
 
 
 
 
 
 
 
r   N)r,   
__future__r   __all__collections.abcr   typingr   manim.mobject.text.numbersr   animation.animationr
   utils.bezierr   r   r    r   r   <module>r@      s    & & " " " " " "4
5 % $ $ $ $ $       4 4 4 4 4 4 + + + + + + & & & & & &6O 6O 6O 6O 6Oi 6O 6O 6Or
 
 
 
 
? 
 
 
 
 
r   