Ruff undocumented-public-function (D103)

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

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

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

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

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

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

def calculate_speed(distance: float, time: float) -> float:
    try:
        return distance / time
    except ZeroDivisionError as exc:
        raise FasterThanLightError from exc

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

В формате NumPy:

def calculate_speed(distance: float, time: float) -> float:
    """Calculate speed as distance divided by time.

    Parameters
    ----------
    distance : float
        Distance traveled.
    time : float
        Time spent traveling.

    Returns
    -------
    float
        Speed as distance divided by time.

    Raises
    ------
    FasterThanLightError
        If speed is greater than the speed of light.
    """
    try:
        return distance / time
    except ZeroDivisionError as exc:
        raise FasterThanLightError from exc

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

def calculate_speed(distance: float, time: float) -> float:
    """Calculate speed as distance divided by time.

    Args:
        distance: Distance traveled.
        time: Time spent traveling.

    Returns:
        Speed as distance divided by time.

    Raises:
        FasterThanLightError: If speed is greater than the speed of light.
    """
    try:
        return distance / time
    except ZeroDivisionError as exc:
        raise FasterThanLightError from exc