Docstring Specification: Python Functions

April 23, 2025 · View on GitHub

Analyze all function definitions provided, improve the docstrings, and ensure clarity, consistency, and adherence to best practices.


High-Level Objective

  • Improve Documentation Clarity:
    Ensure that all function docstrings follow a structured and readable format, using clear parameter descriptions and return values.

  • Include Mathematical Equations:
    When applicable, include equations in Unicode format to enhance readability and scientific accuracy.

  • Ensure Consistency:
    Maintain a uniform style for docstrings, ensuring proper indentation, spacing, and structure.

  • ADD EXAMPLES:
    Add examples to demonstrate function usage, if applicable.

  • Include References:
    Add a "References" section when applicable, citing sources such as Wikipedia pages, journal articles, or books for scientific validity.


Mid-Level Objectives

  • Standardized Docstring Format:
    Use the following format:

    def function_name(param1: type, param2: type) -> return_type:
        """
        Brief description of what the function does.
    
        A description of the function, including the purpose
        and methodology. Can be multiple lines. Where calculated as:
    
        - φ = (γ × β) / c
            - φ is Description of φ.
            - γ is Description of γ.
            - β is Description of β.
            - c is Description of the constant.
    
        Arguments:
            - param1 : Description of param1.
            - param2 : Description of param2.
    
        Returns:
            - Description of the return value.
    
        Examples:
            ``` py title="Example title"
            import package_name as np
            np.function_name(2, 3)
            # Output: 1.5
            ```
    
            ``` py title="Example Usage 2 array input"
            import package_name as np
            np.function_name(np.array([4,5,5]), np.array([2,3,4]))
            # Output: array([4.0, 1.66666667, 1.25])
            ```
    
        References:
            - Author Name, "Title of the Article," Journal Name, Volume, Issue, Year.
                [DOI](url_link)
            - "Article Title",
              [Wikipedia](link)
        """
        return (param1 * param2) / CONSTANT
    
  • Mathematical Equation Representation:

    • If needed, include mathematical equations in Unicode format (e.g., C = (P × M) / (R × T)) for broader compatibility.
  • Consistent Spacing and Formatting:

    • Ensure a space after : in Arguments: descriptions.
    • Maintain proper indentation and line breaks, (- parameter : Description)
    • Use examples to demonstrate function usage.
    • Use a "References" section to cite sources.

Implementation Steps

1. Analyze the Function Docstrings

Review each function's existing docstring to identify issues, including:

  • Incorrect parameter names
  • Inconsistent formatting
  • Missing or unclear descriptions
  • Lack of references when needed

2. Update Docstrings for Clarity and Readability

  • UPDATE function descriptions for clarity.
  • All parameter descriptions follow the same style (- parameter : Description). Using a hyphen, colon, and space before the description.
  • UPDATE all parameters and return values are described.
  • CHECK all line lengths are 79 characters or less, for readability.
  • USE equations in Unicode format when applicable.
    • DEFINE each variable and the equation in a clear and concise manner, in style '- variable is describe variable'.
  • ADD References for scientific accuracy.

Example Before:

def calculate_concentration(partial_pressure, molar_mass, temperature):
    """Calculate the concentration of a gas from its partial pressure, molar mass, and temperature using the ideal gas law.

    Parameters:
    pressure (float or NDArray[np.float64]): Partial pressure of the gas
    in Pascals (Pa).
    molar_mass (float or NDArray[np.float64]): Molar mass of the gas in kg/mol
    temperature (float or NDArray[np.float64]): Temperature in Kelvin.

    Returns:
    - concentration (float or NDArray[np.float64]): Concentration of the gas
    in kg/m^3.
    """
    return (partial_pressure * molar_mass) / (float(GAS_CONSTANT) * temperature)

Example After (With Reference):

def get_calculate_concentration(
    partial_pressure: Union[float, NDArray[np.float64]],
    molar_mass: Union[float, NDArray[np.float64]],
    temperature: Union[float, NDArray[np.float64]],
) -> Union[float, NDArray[np.float64]]:
    """
    Calculate the concentration of a gas using the ideal gas law.

    The concentration is determined using the equation:

    - C = (P × M) / (R × T)
        - C is the concentration in kg/m³,
        - P is the partial pressure in Pascals (Pa),
        - M is the molar mass in kg/mol,
        - R is the universal gas constant (J/(mol·K)),
        - T is the temperature in Kelvin.

    Arguments:
        - partial_pressure : Partial pressure of the gas in Pascals (Pa).
        - molar_mass : Molar mass of the gas in kg/mol.
        - temperature : Temperature in Kelvin.

    Returns:
        - Concentration of the gas in kg/m³.

    Examples:
        ``` py title="Example Usage"
        import particula as par
        par.gas.get_calculate_concentration(1.5, 0.02897, 298)
        # Output: 1.6175
        ```

    References:
        - "Ideal Gas Law,"
          [Wikipedia](https://en.wikipedia.org/wiki/Ideal_gas_law)
        - J. D. Lee, *Physical Chemistry*, 5th ed., Oxford University
          Press, 2019.
    """
    return (partial_pressure * molar_mass) / (float(GAS_CONSTANT) * temperature)

3. Apply Consistency Rules

Ensure that:

  • All Argument descriptions follow the same style (parameter : Description).
  • Equations are formatted in Unicode for clarity.
  • A "References" section is included when citing sources.
  • All docstrings use a structured format for easy readability.

Final Checklist

  • Docstrings follow a consistent format (brief description, equation, arguments, return values, references).
  • Equations are formatted properly (Unicode, based on the context).
  • Parameter names and descriptions are accurate.
  • Proper spacing and indentation are used.
  • References are included when applicable.
  • All functions have complete and clear docstrings.