section-underline-matches-section-length (D409)#
Derived from the pydocstyle linter.
Fix is always available.
What it does#
Checks for section underlines in docstrings that do not match the length of the corresponding section header.
Why is this bad?#
Multi-line docstrings are typically composed of a summary line, followed by a blank line, followed by a series of sections, each with a section header and a section body.
Some docstring formats (like reStructuredText) use underlines to separate section bodies from section headers.
When present, section underlines should match the length of the corresponding section header.
This rule is enabled when using the numpy
convention, and disabled
when using the google
or pep257
conventions.
Example#
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
Use instead:
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