Source code for qcodes.utils.partial_utils
from functools import partial
from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
    from collections.abc import Callable
[docs]
def partial_with_docstring(
    func: "Callable[..., Any]", docstring: str, **kwargs: Any
) -> "Callable[..., Any]":
    """
    We want to have a partial function which will allow us to access the docstring
    through the python built-in help function. This is particularly important
    for client-facing driver methods, whose arguments might not be obvious.
    Consider the follow example why this is needed:
    >>> from functools import partial
    >>> def f():
    >>> ... pass
    >>> g = partial(f)
    >>> g.__doc__ = "bla"
    >>> help(g) # this will print the docstring of partial and not the docstring set above
    Args:
        func: A function that its docstring will be accessed.
        docstring: The docstring of the corresponding function.
        **kwargs: Keyword arguments passed to the function.
    """
    ex = partial(func, **kwargs)
    def inner(*inner_args: Any, **inner_kwargs: Any) -> Any:
        return ex(*inner_args, **inner_kwargs)
    inner.__doc__ = docstring
    return inner