Ruff undocumented-public-method (D102)

undocumented-public-method проверяет отсутствие документации для публичных методов.

Почему это неправильно

Публичные методы должны быть документированы с помощью docstring, который описывает их назначение и поведение. Обычно docstring метода должен:

  • Описывать поведение метода.
  • Перечислять его аргументы.
  • Описывать побочные эффекты.
  • Указывать возможные исключения.
  • Описывать возвращаемые значения.
  • Содержать любую другую информацию, важную для пользователя.

Если кодовая база придерживается определённого стандарта оформления docstring для методов (например, NumPy или Google), следуйте ему для единообразия.

Пример ошибки

class Cat(Animal):
    def greet(self, happy: bool = True):
        if happy:
            print("Meow!")
        else:
            raise ValueError("Tried to greet an unhappy cat.")

Как правильно

В формате NumPy:

class Cat(Animal):
    def greet(self, happy: bool = True):
        """Print a greeting from the cat.

        Parameters
        ----------
        happy : bool, optional
            Whether the cat is happy, True by default.

        Raises
        ------
        ValueError
            If the cat is not happy.
        """
        if happy:
            print("Meow!")
        else:
            raise ValueError("Tried to greet an unhappy cat.")

Или в формате Google:

class Cat(Animal):
    def greet(self, happy: bool = True):
        """Print a greeting from the cat.

        Args:
            happy: Whether the cat is happy, True by default.

        Raises:
            ValueError: If the cat is not happy.
        """
        if happy:
            print("Meow!")
        else:
            raise ValueError("Tried to greet an unhappy cat.")