From e3c710abd9d9e00b686bb932f60a00ae7e71f72d Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Tue, 13 May 2025 22:12:16 +0700 Subject: [PATCH 1/4] fix get_number_mobjects() error --- manim/mobject/graphing/number_line.py | 74 +++++++++++++-------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index 017fac5bcb..d0c5c349f7 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -12,6 +12,8 @@ from typing import TYPE_CHECKING, Callable if TYPE_CHECKING: + from typing_extensions import Self + from manim.mobject.geometry.tips import ArrowTip from manim.typing import Point3DLike @@ -485,40 +487,34 @@ def get_number_mobject( num_mob.shift(num_mob[0].width * LEFT / 2) return num_mob - def get_number_mobjects(self, *numbers, **kwargs) -> VGroup: - if len(numbers) == 0: - numbers = self.default_numbers_to_display() + def get_number_mobjects( + self, numbers: Iterable[float] | None = None, **kwargs + ) -> VGroup: + if numbers is None: + numbers = self.get_numbers_to_display() return VGroup([self.get_number_mobject(number, **kwargs) for number in numbers]) def get_labels(self) -> VGroup: return self.get_number_mobjects() - def add_numbers( + def get_numbers_to_display( self, x_values: Iterable[float] | None = None, excluding: Iterable[float] | None = None, - font_size: float | None = None, - label_constructor: VMobject | None = None, - **kwargs, - ): - """Adds :class:`~.DecimalNumber` mobjects representing their position - at each tick of the number line. The numbers can be accessed after creation - via ``self.numbers``. + ) -> Iterable[float]: + """Returns an iterable of numbers to be labeled on the number line. Parameters ---------- x_values An iterable of the values used to position and create the labels. - Defaults to the output produced by :meth:`~.NumberLine.get_tick_range` excluding - A list of values to exclude from :attr:`x_values`. - font_size - The font size of the labels. Defaults to the ``font_size`` attribute - of the number line. - label_constructor - The :class:`~.VMobject` class that will be used to construct the label. - Defaults to the ``label_constructor`` attribute of the number line - if not specified. + Iterable of values to exclude from labeling. + + Returns + ------- + Iterable[float] + The list of numeric values to be labeled and displayed on the number line. """ if x_values is None: x_values = self.get_tick_range() @@ -526,24 +522,28 @@ def add_numbers( if excluding is None: excluding = self.numbers_to_exclude - if font_size is None: - font_size = self.font_size + return [x for x in x_values if x not in excluding] - if label_constructor is None: - label_constructor = self.label_constructor + def add_numbers( + self, + x_values: Iterable[float] | None = None, + excluding: Iterable[float] | None = None, + **kwargs, + ) -> Self: + """Adds :class:`~.DecimalNumber` mobjects representing their position + at each tick of the number line. The numbers can be accessed after creation + via ``self.numbers``. - numbers = VGroup() - for x in x_values: - if x in excluding: - continue - numbers.add( - self.get_number_mobject( - x, - font_size=font_size, - label_constructor=label_constructor, - **kwargs, - ) - ) + Parameters + ---------- + x_values + An iterable of the values used to position and create the labels. + Defaults to the output produced by :meth:`~.NumberLine.get_tick_range` + excluding + A list of values to exclude from :attr:`x_values`. + """ + numbers_to_display = self.get_numbers_to_display(x_values, excluding) + numbers = self.get_number_mobjects(numbers_to_display, **kwargs) self.add(numbers) self.numbers = numbers return self @@ -555,7 +555,7 @@ def add_labels( buff: float | None = None, font_size: float | None = None, label_constructor: VMobject | None = None, - ): + ) -> Self: """Adds specifically positioned labels to the :class:`~.NumberLine` using a ``dict``. The labels can be accessed after creation via ``self.labels``. From 38cfe2d244ba4f7864938b1c90691395b101a796 Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Wed, 14 May 2025 07:45:57 +0700 Subject: [PATCH 2/4] improve docstring --- manim/mobject/graphing/number_line.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index d0c5c349f7..7750edca59 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -501,19 +501,22 @@ def get_numbers_to_display( self, x_values: Iterable[float] | None = None, excluding: Iterable[float] | None = None, - ) -> Iterable[float]: - """Returns an iterable of numbers to be labeled on the number line. + ) -> list[float]: + """Returns an list of numbers to be labeled on the number line. Parameters ---------- x_values An iterable of the values used to position and create the labels. + Defaults to the output produced by :meth:`~.NumberLine.get_tick_range` excluding - Iterable of values to exclude from labeling. + A list of values to exclude from :attr:`x_values`. + **kwargs + The keyword arguments passed to :meth:`get_number_mobject` Returns ------- - Iterable[float] + list[float] The list of numeric values to be labeled and displayed on the number line. """ if x_values is None: From 2207f56e7880df3dcb7290530ab46f0f96dc7ae0 Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Wed, 14 May 2025 07:50:58 +0700 Subject: [PATCH 3/4] improve docstring --- manim/mobject/graphing/number_line.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index 7750edca59..d269288261 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -502,7 +502,7 @@ def get_numbers_to_display( x_values: Iterable[float] | None = None, excluding: Iterable[float] | None = None, ) -> list[float]: - """Returns an list of numbers to be labeled on the number line. + """Returns a list of numbers to be labeled on the number line. Parameters ---------- @@ -517,7 +517,7 @@ def get_numbers_to_display( Returns ------- list[float] - The list of numeric values to be labeled and displayed on the number line. + The list of numbers to be labeled on the number line. """ if x_values is None: x_values = self.get_tick_range() From 9276cea021ea744cedabfd8a00f1daebbe8a6807 Mon Sep 17 00:00:00 2001 From: Irvanal Haq Date: Thu, 15 May 2025 21:25:53 +0700 Subject: [PATCH 4/4] add kwargs docstring in add_numbers --- manim/mobject/graphing/number_line.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/manim/mobject/graphing/number_line.py b/manim/mobject/graphing/number_line.py index d269288261..769760d2e9 100644 --- a/manim/mobject/graphing/number_line.py +++ b/manim/mobject/graphing/number_line.py @@ -511,8 +511,6 @@ def get_numbers_to_display( Defaults to the output produced by :meth:`~.NumberLine.get_tick_range` excluding A list of values to exclude from :attr:`x_values`. - **kwargs - The keyword arguments passed to :meth:`get_number_mobject` Returns ------- @@ -544,6 +542,8 @@ def add_numbers( Defaults to the output produced by :meth:`~.NumberLine.get_tick_range` excluding A list of values to exclude from :attr:`x_values`. + **kwargs + The keyword arguments passed to :meth:`get_number_mobject` """ numbers_to_display = self.get_numbers_to_display(x_values, excluding) numbers = self.get_number_mobjects(numbers_to_display, **kwargs) @@ -558,7 +558,7 @@ def add_labels( buff: float | None = None, font_size: float | None = None, label_constructor: VMobject | None = None, - ) -> Self: + ): """Adds specifically positioned labels to the :class:`~.NumberLine` using a ``dict``. The labels can be accessed after creation via ``self.labels``.