Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to indicate a valid range in a Python docstring using Sphinx?

Is there a way to indicate a "valid range" in a Python docstring using Sphinx? For example, consider the following linear function.

def f(m, x, b):
    """
    Returns the `y` value of a linear function using slope-intercept form.
    
    :param x: The x-axis value.
    :type x: float
    :param m: The slope of the linear function.
    :type m: float
    :param b: The y-intercept.
    :type b: float
    """
    if x < 0:
        raise ValueError('The min "x" value of this function is 0')
    return m * x + b

Is there a way to indicate the domain of x to be something like "x must be greater than zero"? Or in interval notation, [0, infinity].

Specifically, is there a way to document this in a Python docstring using Sphinx?

like image 596
MikeyE Avatar asked Oct 27 '25 08:10

MikeyE


1 Answers

By default Python modules are UTF-8 encoded so the characters are going to render normally. The string literals can be written using the Unicode character or corresponding hexadecimal code using the u prefix in the docstring. This makes the Unicode range for math available to be written in the docstring.

Python reads program text as Unicode code points; the encoding of a source file can be given by an encoding declaration and defaults to UTF-8, see PEP 3120 for details.

Example string literals with Unicode characters written both explicitly and with u prefix, using a Google style docstring:

def f(m, x, b) -> float:
    """
    Returns the `y` value of a linear function using slope-intercept form.

    Args:
        x (float): The x-axis value.
        m (float): The slope of the linear function.
        b (float): The y-intercept.
    Returns:
        float: The y-axis value.
    Raises:
        ValueError: Value of `x` ∈ [0, ∞], or `x` \u2208\u005B 0, \u221E\u005D.

    """
    if x < 0:
        raise ValueError('The min "x" value of this function is 0')
    return m * x + b

The result:

enter image description here

This works fine for simple equations, if you want to write more sophisticated mathematical expressions Sphinx has several extensions that allow to output them as HTML.

like image 64
bad_coder Avatar answered Oct 29 '25 21:10

bad_coder



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!